STL

std::vector - erase 時に std::remove を活用する

std::vector で特定を消去したい時に便利な方法があったので記載。 とりあえず今までのコードを記述。 std::vector<int> hige; hige.push_back(2); hige.push_back(5); hige.push_back(2); hige.push_back(6); ... std::vector<int>::iterator it = hige.begin(); whil</int></int>…

std::map - erase の戻り値を活用する

またまた std::map の記事です; std::map で erase してみた。 std::map<int, char> hige; hige.insert(std::make_pair(1, 'a')); ... std::map<int, char>::iterator it = hige.find(1); if (it == hige.end()) { // キーが重複している } else { hige.erase(it); } 「erase 時に</int,></int,>…

std::map - insert 時の無駄な find を防ぐ

std::map 使用時に、 「挿入させたいキーが既に登録されているかチェックしたい」 ってことがよくある。 そんな時は insert の戻り値を使用する。 std::map<int, char> hige; hige.insert(1, 'a'); ... std::map<int, char>::_Pairib pib = hige.insert(1, 'b'); if (!pib.second) </int,></int,>…

std::map - erase 時の iterator の無効化を防ぐ

std::map を使用していると、 「ある条件を満たし(た|てない)要素を削除したい」 ってことがよくある。 そんな時はこんな感じにしてみる。 std::map<int, bool> hige; std::map<int, bool>::iterator it = hige.begin(); while (it != hige.end()) { if (it->second == true) { </int,></int,>…