05/11/12 18:10:52
>>130
なるほど,vectorの場合は挿入,削除をしたら再取得しないとだめなのですね.
それに関しては分かったのですが,その後いくつか内容を出力してみたところ,
どうやら
v.insert(v.begin(), start, end);
この時点ですでにstartとendがずれているようでした.
ためしにv(内容は0,1,2,3,4)に対して以下のような操作をしたところ
vector<int>::iterator start = v.begin();
vector<int>::iterator end = start;
end++;
v.insert(v.begin(), start, end);
これと,startをインクリメントしたもの
vector<int>::iterator start = v.begin();
start++;
vector<int>::iterator end = start;
end++;
v.insert(v.begin(), start, end);
これだと結果が変わらないのですが,insert(pos, start, end)の
このstartは挿入したい要素の始まりのイテレータで,
endは挿入したい要素の終わりの要素の次のイテレータを指定しているのですよね?
なぜかstartをインクリメントしてもしなくても結果が変わらないのですが
どうなっているんでしょうか?