memo/program/C,C++/vector をテンプレートにして作成
ページ一覧
編集メニュー >
新規作成
編集
コピー
名前の変更
アップロード
添付ファイル一覧
バックアップ
開始行:
* vector [#kb8e35d2]
** eraseの使い方 [#q67e9506]
eraseを使用するときは以下のように書く。
std::vector::iterator it = v.begin();
while ( it != v.end(); ){
if ( 条件 ) it = v.erase(it);
else it++;
<--ここにit++;を入れてはい...
}
eraseは削除後に有効な次の要素への iterator を返す。
なのでwhileの最後でインクリメントすると1つ要素をスキップ...
ちなみに以下もよさそうだが危ういとのこと。
for (int i=0;i<(int)v.size();++i){
if ( 条件 ) {
v.erase(i);
--i;
}
T君のコードはこうなっていてダメなときと大丈夫なときがある。
どういうときにダメなのかまだ理解できていない。。。
終了行:
* vector [#kb8e35d2]
** eraseの使い方 [#q67e9506]
eraseを使用するときは以下のように書く。
std::vector::iterator it = v.begin();
while ( it != v.end(); ){
if ( 条件 ) it = v.erase(it);
else it++;
<--ここにit++;を入れてはい...
}
eraseは削除後に有効な次の要素への iterator を返す。
なのでwhileの最後でインクリメントすると1つ要素をスキップ...
ちなみに以下もよさそうだが危ういとのこと。
for (int i=0;i<(int)v.size();++i){
if ( 条件 ) {
v.erase(i);
--i;
}
T君のコードはこうなっていてダメなときと大丈夫なときがある。
どういうときにダメなのかまだ理解できていない。。。
ページ名:
and
or
Menu
kondowiki
memo
exp
link
#lsx
Counter: 0, today: 0, yesterday: 0