[解決済み] 中括弧内のForループ
2022-05-13 17:32:06
質問
このようなfor-loopのレイアウトに出会ったことがあります。
#include <iostream>
int main()
{
{
for (int i = 0; i != 10; ++i)
{
std::cout << "delete i->second;" << std::endl;
}
}
{
for (size_t i = 0; i < 20; ++i)
{
std::cout << "delete m_indices[i];" << std::endl;
}
}
return 0;
}
この中括弧の余分なレイヤーは何のためなのでしょうか?これは私たちのコードベースに何度か登場します。
どのように解決するのですか?
昔々、遠い昔のこと。 VS6 が存在し、人気を博していました。 しかし、多くの C++ 標準に準拠できませんでした。標準が正式にリリースされる直前 (同じ年) にリリースされたので、当時は妥当だったのですが、私の知る限りでは、標準のドラフトに準拠していました。
草案と正式な標準の間で変更された標準の 1 つは、最初のセクションで作成された for ループ変数の有効期限でした。
{
for (int i=0; i<1; ++i){}
for (int i=0; i<2; ++i){}
}
なぜなら
i
が2番目のforループで再定義されたからです。
他のコンパイラーもこのバグに悩まされていましたが、VS6 を強調したのは、標準のリリース後何年も Visual Studio の唯一のバージョンであり続け、この特定の問題に対するアップデートをリリースしなかったため、より大きな影響を与えたことを意味します。
これに対する解決策は、あなたが示したように、全体の for ループをそれ自身のスコープに強制することです。
関連
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
[解決済み] クラスにデフォルトコンストラクタが存在しない。
-
[解決済み】c++でstd::vectorを返すための効率的な方法
-
[解決済み】リンカーエラーです。"リンカ入力ファイルはリンクが行われていないため未使用"、そのファイル内の関数への未定義参照
-
[解決済み】C++の余分な資格エラー
-
[解決済み】警告 - 符号付き整数式と符号なし整数式の比較
-
[解決済み] 警告:暗黙の定数変換でのオーバーフロー
-
[解決済み] Javaでenumを繰り返し処理するためのforループ
-
[解決済み] なぜリストの初期化(中括弧を使用)が他の方法より優れているのですか?
-
[解決済み】PythonのFORループ内のループカウントを取得する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】C++のGetlineの問題(オーバーロードされた関数 "getline "のインスタンスがない
-
[解決済み] string does not name a type Errorが発生するのはなぜですか?
-
[解決済み】「corrupted size vs. prev_size」glibc エラーを理解する。
-
[解決済み】C++プログラムでのコンソールの一時停止
-
[解決済み】リンカーエラーです。"リンカ入力ファイルはリンクが行われていないため未使用"、そのファイル内の関数への未定義参照
-
[解決済み】Visual Studioのデバッガーエラー。プログラムを開始できません 指定されたファイルが見つかりません
-
[解決済み] 警告:暗黙の定数変換でのオーバーフロー
-
[解決済み】エラー。引数リストに一致するコンストラクタのインスタンスがない