スレを勃てるまでもないC/C++の質問はここで 14
■ このスレッドは過去ログ倉庫に格納されています
0095デフォルトの名無しさん
2010/03/26(金) 10:45:48std::vector<int> v;
v.push_back(0);
v.push_back(1);
v.push_back(2);
std::remove(v.begin(), v.end(), 0);
std::remove(v.begin(), v.end(), 1);
printf("%d", v.size());
上記のようにすると、最後のvのサイズは1を期待するのですが3のままです。
でも、v[0]には本来の0ではなく2が入っています。
v[1]もv[2]も2が入っています。
std::remove()の代わりにvector::erase()を使用すれば、
v.size()は1を返します。
std::remove()はそういうモノなのでしょうか?
VC2008で確認しています。
■ このスレッドは過去ログ倉庫に格納されています