amazon

12.4.11

C++ std::vectorのメソッドinsertでの注意


<メモ>
insertするとイテレータが無効になる

std::vector<std::string> vec;
vec.push_back("文字列1");
vec.push_back("文字列2");
vec.push_back("文字列3");
と作ったvectorオブジェクトvec = 文字列1, 文字列2, 文字列3(この順になっている)
の3要素目に文字列4を挿入して、vec = 文字列1, 文字列2, 文字列4, 文字列3 としたい。

std::vector<std::string>::iterator it = vec.begin(); //イテレータの初期化 この時点でitには文字列1の先頭アドレスが入る
for (int i = 0; i < 2; i++) ++it; //イテレータを2つ進める itには文字列3の先頭アドレス
vec.insert(it , "文字列4"); //文字列4の挿入
これで完成。
で、ここでこの後に
++it;
vec.insert(it , "文字列5");
とやると、4要素目には挿入できない。

0 件のコメント:

コメントを投稿