次のコードスニペットが異なる出力を提供するのはなぜですか?(以下の出力を参照)
スニペット1:
vector<int> v;
v.push_back(1);
v.push_back(2);
vector<int>::const_iterator iterv1=v.begin();
vector<int>::const_iterator iterv2=v.begin();
for(;iterv1!=v.end();++iterv1){
for(;iterv2!=v.end();++iterv2){
cout << "*iterv1 = " << *iterv1 << " *iterv2 = " << *iterv2 << endl;
}
}
Ouptut:
*iterv1 = 1 *iterv2 = 1
*iterv1 = 1 *iterv2 = 2
コードスニペット2:
vector<int> v;
v.push_back(1);
v.push_back(2);
for(int i=0;i<2;++i){
for(int j=0;j<2;++j){
cout << "v[i] = " << v[i] << " v[j] = " << v[j] << endl;
}
}
出力:
v[i] = 1 v[j] = 1
v[i] = 1 v[j] = 2
v[i] = 2 v[j] = 1
v[i] = 2 v[j] = 2
私は同じことを期待していました(数値出力。明らかに、イテレータについて理解していないことがあります。誰かが助けてくれますか?