c++でmapのeraseを使いたい
Q&A
Closed
解決したいこと
mapのkeyを全て取得し、条件に合ったものだけerase関数で削除するプログラムを作りました。
実行すると実行時エラーが出ます。
解決方法を教えてください。
発生しているエラー
zsh: segmentation fault ./a.out
コード
#include <iostream>
#include <string>
#include <map>
#include <vector>
using namespace std;
int main()
{
std::map<string, std::vector<string>> map{
{"1", {"11"}},
{"2", {"22"}},
{"3", {"33"}}};
// mapの全てのkeyを取得
for (auto i = map.begin(); i != map.end(); i++)
{
// ここに色々処理がある
if (true)
{
map.erase(i->first);
}
}
// 全て表示
for (auto const &[k, v] : map)
printf("(%d,%d)\n", k, v[0]);
return 0;
}
0