31
12月
Monthly Archives: 12月 2014
29
12月
南海沿線観光案内図@汐見橋駅
28
12月
381系くろしお18号新大阪行き、9連
26
12月
阪和線普通和泉砂川行き
24
12月
vector iterators incompatible
#include<vector>
int main(){
std::vector<int> v;
v.push_back(100);
v.push_back(101);
for(std::vector<int>::iterator ite=v.begin(),
end=v.end();
ite!=end;){
if(*ite%2){
ite=v.erase(ite);
}else{
++ite;
}
}
return 0;
}
vectorで要素のerase()を行う上記コードを実行すると、
vector iterators incompatible
と怒られてしまいます。

原因は、erase()したにもかかわらず、初期化で代入した変数endを使用していることにあります。
end=v.end();
ite!=end;){
無駄な関数呼び出しをしないためによく用いられる手法ですが、
自分のような初心者が何も考えずにコピペすると陥る罠ですね。



