我如何在这里获得对第二个地图的引用?我希望能够使用items.erase()来删除元素。在下面的示例中,主图中的元素数量并没有改变,它只改变了副本。请只使用C++ 98。
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main()
{
map<int, map<int, string> > acks;
acks[10].insert(make_pair(1, "a"));
acks[10].insert(make_pair(2, "b"));
acks[10].insert(make_pair(3, "c"));
acks[20].insert(make_pair(11, "b"));
acks[20].insert(make_pair(12, "c"));
map<int, map<int, string> >::const_iterator it = acks.find(10);
if (it != acks.end())
{
map<int, string> items = it->second;
map<int, string>::const_iterator it2 = items.find(3);
cout << "size before: " << acks[10].size() << endl;
items.erase(it2);
cout << "size after: " << acks[10].size() << endl;
}
}发布于 2020-10-18 13:35:11
复制发生在此处
map<int, string> items = it->second;所以只需将其更改为引用
map<int, string>& items = it->second;我想你也需要改变
map<int, map<int, string> >::const_iterator it = acks.find(10);至
map<int, map<int, string> >::iterator it = acks.find(10);https://stackoverflow.com/questions/64410059
复制相似问题