我有一个保留字符串的列表。我想修改列表中显示的每个元素,然后将新值推送到列表中,然后弹出旧的元素。这是我的代码:
#include <iostream>
#include <string>
#include <list>
using namespace std;
int main(void)
{
list <string> tmp;
tmp.push_back("pac");
tmp.push_back("sac");
tmp.push_back("fac");
auto last = tmp.end();
for (auto beg = tmp.begin();beg != last; ++beg){
for (int i = 0; i < 3; ++i)
tmp.push_back(*beg + to_string(i));
tmp.pop_front();
}
for (auto a : tmp)
cout << a << endl;
return 0;
}
但是,我收到Segmentation fault (core dumped)
错误,这是由于tmp.pop_front()
造成的。如果我删除了它,该程序可以正常运行,但旧元素仍在列表中。
这是我希望的输出:
pac0
pac1
pac2
sac0
sac1
sac2
fac0
fac1
fac2
问题出在哪里?