[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
2022-01-22 16:46:09
質問
次のコードは、最初のforループでベクトルに10個の値を入力し、2番目のforループでベクトルの要素を表示します。 出力は、jループの前にcout文までです。ベクトル添え字が範囲外であるというエラーが発生します。
#include "stdafx.h"
#include "iostream"
#include "vector"
using namespace std;
int _tmain(int argc, _TCHAR * argv[])
{
vector<int> v;
cout << "Hello India" << endl;
cout << "Size of vector is: " << v.size() << endl;
for (int i = 1; i <= 10; ++i)
{
v.push_back(i);
}
cout << "size of vector: " << v.size() << endl;
for (int j = 10; j > 0; --j)
{
cout << v[j];
}
return 0;
}
解決方法は?
プッシュバックのインデックスをどのように作成するかにかかわらず、ベクトルには、以下の場所からインデックスされた10個の要素が含まれます。
0
(
0
,
1
, ...,
9
). つまり、2つ目のループでは
v[j]
が無効な場合
j
は
10
.
これでエラーは直ります。
for(int j = 9;j >= 0;--j)
{
cout << v[j];
}
一般的には、インデックスを次のように考えるのがよいでしょう。
0
をベースにしているので、最初のループもこのように変更することをお勧めします。
for(int i = 0;i < 10;++i)
{
v.push_back(i);
}
また、コンテナの要素にアクセスするには、イテレータ(この場合は逆イテレータ)を使用するのが慣用的な方法である。
for (vector<int>::reverse_iterator i = v.rbegin(); i != v.rend(); ++i)
{
std::cout << *i << std::endl;
}
関連
-
[解決済み】C++ クラスヘッダが含まれているときに「不明な型」があるのはなぜですか?重複
-
[解決済み】Visual Studio 2015で「非標準の構文。'&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み] 非常に基本的なC++プログラムの問題 - バイナリ式への無効なオペランド
-
[解決済み】Visual Studio 2013および2015でC++コンパイラーエラーC2280「削除された関数を参照しようとした」が発生する
-
[解決済み】リンカーエラーです。"リンカ入力ファイルはリンクが行われていないため未使用"、そのファイル内の関数への未定義参照
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
-
[解決済み】クラスのコンストラクタへの未定義参照、.cppファイルの修正も含む
-
[解決済み] std::vector にある項目が存在するかどうかを調べるには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 unsigned int vs. size_t
-
[解決済み】致命的なエラー LNK1169: ゲームプログラミングで1つ以上の多重定義されたシンボルが発見された
-
[解決済み】C++の変数はイニシャライザーを持っているが、不完全な型?
-
[解決済み】リンカーエラーです。"リンカ入力ファイルはリンクが行われていないため未使用"、そのファイル内の関数への未定義参照
-
[解決済み】エラー:free(): 次のサイズが無効です(fast)。
-
[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
-
[解決済み] gdbを使用してもデバッグシンボルが見つからない
-
[解決済み】 while(cin) と while(cin >> num) の違いは何ですか?)
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】Eclipse IDEでC++エラー「nullptrはこのスコープで宣言されていません」が発生する件