[解決済み] C++の配列の正しいループ処理方法
2022-03-04 19:04:19
質問
最近、私は多くの例を見つけました、それらのほとんどはC++ 98に関してです、とにかく私は私の単純な配列とループを作りました( コードパッド ):
#include <iostream>
using namespace std;
int main ()
{
string texts[] = {"Apple", "Banana", "Orange"};
for( unsigned int a = 0; a < sizeof(texts); a = a + 1 )
{
cout << "value of a: " << texts[a] << endl;
}
return 0;
}
出力します。
の値を指定します。アップル の値です。バナナ の値です。オレンジ セグメンテーションの不具合
最後のセグメンテーションフォールトを除けば、問題なく動作しています。
質問ですが、この配列とループスルーは良い方法なのでしょうか?私はC++ 11を使用しているので、それが標準に適合しており、より良い方法で行うことができなかったことを確認したいのですが?
どのように解決するのですか?
C/C++の場合
sizeof
.常にオブジェクト全体のバイト数を示し、配列は1つのオブジェクトとして扱われます。注意してください。
sizeof
は、配列の最初の要素または単一のオブジェクトへのポインタであり、そのサイズは
ポインタ
であって、指されたオブジェクトではありません。いずれにせよ
sizeof
が行います。
ない
は、配列の要素数 (長さ) を表します。長さを得るには、各要素の大きさで割る必要があります。
for( unsigned int a = 0; a < sizeof(texts)/sizeof(texts[0]); a = a + 1 )
C++11の方法で行うことについては、おそらく最も良い方法は
for(const string &text : texts)
cout << "value of text: " << text << endl;
これにより、コンパイラは必要な反復回数を把握することができます。
他の方が指摘されているように
std::array
は、C++11 では生の配列よりも好ましいとされています。
sizeof
のように失敗してしまうので、やはりこの答えがベターだと思います。
関連
-
[解決済み】C++でユーザー入力を待つ【重複あり
-
[解決済み】テンプレートの引数1が無効です(Code::Blocks Win Vista) - テンプレートは使いません。
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】警告 - 符号付き整数式と符号なし整数式の比較
-
[解決済み] JavaScriptのオブジェクトをループスルーまたは列挙するにはどうすればよいですか?
-
[解決済み] Java の配列を表示する最も簡単な方法は何ですか?
-
[解決済み] Bashで文字列の配列をループする?
-
[解決済み] Bashでファイルの中身をループする
-
[解決済み] オブジェクトをメンバーとして、プレーンなJavaScriptオブジェクトをループさせる方法
-
[解決済み】JavaScriptで2つの配列を結合し、項目の重複を排除する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み】LLVMで暗黙のうちに削除されたコピーコンストラクタの呼び出し
-
[解決済み] error: 'ostream' does not name a type.
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み】'cout'は型名ではない
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み】エラー:不完全な型へのメンバーアクセス:前方宣言の
-
[解決済み] [Solved] インクルードファイルが開けません。'stdio.h' - Visual Studio Community 2017 - C++ Error
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み】'std::cout'への未定義の参照