簡単な質問で申し訳ありません
char型の配列に格納された整数が0であるかどうかの判定は
皆さんならどのように行ないますか?
例
C++
1char tmp[3]; 2 3(tmpに整数を代入する処理) 4 5if( tmpの要素全てに0が格納されているかどうかの判定 ) 6{ 7}
皆さんならどのように実装するでしょうか?
なるべくシンプルに実装したいのですが
自分で考えたものはなんか汚く見えて...w
アンケートみたいになってしまって申し訳ありませんが
回答よろしくお願いいたします
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/24 00:39
回答4件
0
ベストアンサー
std::all_of を使います。
C++
1#include <algorithm> 2#include <iostream> 3#include <iterator> 4 5int main(void) { 6 char arr1[] = {0, 0, 0, 0}; 7 char arr2[] = {0, 0, 0, 1}; 8 9 std::cout << std::boolalpha; 10 11 std::cout 12 << std::all_of(std::cbegin(arr1), std::cend(arr1), [](auto e) { return e == 0; }) 13 << "\n" 14 ; 15 std::cout 16 << std::all_of(std::cbegin(arr2), std::cend(arr2), [](auto e) { return e == 0; }) 17 << "\n" 18 ; 19 20 return 0; 21}
実行結果 Wandbox
true false
投稿2018/10/24 01:29
総合スコア35660
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/24 01:42
2018/10/24 01:45 編集
2018/10/24 01:51 編集
0
こんにちは。
std::all_ofを使うと短く書けますよ。関数やフラグを導入しなくてもthenとelseの両方を書けるのでちょっとすっきりです。
C++
1#include <iostream> 2#include <algorithm> 3 4int main() 5{ 6// char temp[]={0, 1, 2}; 7 char temp[]={0, 0, 0}; 8 if (std::all_of(std::begin(temp), std::end(temp), [](char x){return x==0;})) 9 std::cout << "all zero\n"; 10 else 11 std::cout << "not zero\n"; 12}
【追記】
あああ、ゆったり書いている内に被ってしまいました。
all_ofの再実装になるのでやるべきではないですが、こんなアイデアもあるという意味で、ラムダ式を使う案も載せておきます。
C++
1#include <iostream> 2#include <algorithm> 3 4int main() 5{ 6// char temp[]={0, 1, 2}; 7 char temp[]={0, 0, 0}; 8 9 auto isZero= 10 [](auto const& array) 11 { 12 for (auto x:array) 13 if (x!=0) 14 return false; 15 return true; 16 }; 17 18 if ( isZero(temp) ) 19 std::cout << "all zero\n"; 20 else 21 std::cout << "not zero\n"; 22}
投稿2018/10/24 01:52
編集2018/10/24 01:56総合スコア23272
0
C言語になってしまいますが、比較用の配列を用意しておいてmemcmpするとか。
c
1 char hikaku[3] = {}; 2 if(memcmp(temp, hikaku, sizeof(temp)) == 0){
3要素くらいならif文の&&で並べてしまってもいいと思いますが。
c
1 if(temp[0] == 0 && temp[1] == 0 && temp[2] == 0){
要素数は3つに限らない、比較値が0とは限らない、のであればループで回すのが一般的ですかね。
投稿2018/10/24 02:01
総合スコア16998
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/24 07:02
2018/12/16 19:20 編集
2018/12/16 23:50
2018/12/17 21:51 編集
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。