参考にしたサイト様:
経緯:
csvのデータをvector二次元配列で管理していた。
データ内要素削除時に、誤ったデータ処理が行われていた。
イテレータで改善するか試した。
手順:
イテレータを使って処理する
イテレータの使い方を模索
解決時コード一部:
//月日年だけの一次元配列を用意、必要な値をプッシュバック
std::vector<std::string > Itest_c;
//イテレーターから対象の月日年の出力し比較用一次元配列作る
std::vector<std::string > Itest_p1;
std::vector<std::string > Itest_p2;
//イテレーターの宣言
std::vector<std::vector<std::string>>::iterator it;
for (it = test.begin(); it != test.end(); ) { // <-「it++」をここで使わないらしい
//イテレーター(現在対象一次元配列)を一次元配列に出力
Itest_p1 = *it;
//比較用一次元配列を用意し、p1から必要な値をp2にプッシュバック
if (Itest_p2 == Itest_c) {
it = Itest.erase(it);
//ここでコンティニューを挟むことで、it++せず整合性を保っている?
continue;
}
it++; // ここで次のイテレートに
}
結果:
現在完全に問題なく動作している。
全ては理解できていないですが、実用できていそうです。
非常に参考になりました。
Comments