私は新しいです。私はC++のイテレータ(またはむしろSTL)を初めて使用しています。私はマップのキーを循環的に反復しようとしています。だから、始めから読んでから最後に進み、もう一度最初に戻ります。C++マップを循環的に反復処理すると、プログラムがクラッシュする
#include<iostream>
#include<map>
using namespace std;
int main(int argc, char* argv[])
{
map<const char*, int> colors;
colors = { { "RED", 1 },
{ "YELLOW", 2 },
{ "GREEN", 3 },
{ "ORANGE", 4 },
{ "CYAN", 5 } };
map<const char*, int>::iterator itr = colors.begin();
for(int i=0; i<10; i++) // Loop more than entries in map
{
cout<<itr->first<<endl;
if(itr==colors.end())
itr = colors.begin(); //start from beginning
else
itr++;
}
return 0;
}
私のプログラム(および上記プログラム)一度マップを反復した後にクラッシュし:以下のコードは、私のプログラムの関連部分を簡略化したものです。なぜ私は理解できません。私はSOなどを調べてみると解決策を見つけることができませんでした。
ありがとうございます。
おかげで、私は最後()ではなく、コンテナ内の最後の実体よりも、何を指していることを忘れていました。私は恥ずかしいです。 – user7659698