top of page
  • 執筆者の写真bosi siro

C++ イテレータ

参考にしたサイト様:



経緯:

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++; // ここで次のイテレートに

}



結果:

現在完全に問題なく動作している。

全ては理解できていないですが、実用できていそうです。

非常に参考になりました。


閲覧数:1回0件のコメント

最新記事

すべて表示

C++ SFML マップのスクロール

本日は時間が無い為、突貫工事になる マップのスクロール機能を実装 以下が、追加分になる // プレイヤーを中心にスクロールするビューを作成 sf::View view(sf::FloatRect(0, 0, 800, 600));...

Opmerkingen


bottom of page