我有一个类读取/解析文件并在地图中存储键值对。
typedef std::map<std::string, const int> Data;
typedef std::map<std::string, const int>::reverse_iterator DataItReverse;
现在我有一个getter来从&#34;解析器获取数据&#34;班inline Data getData() const {return _data;}
一切都很棒,直到我想要反复迭代有问题的地图。
for(DataItReverse it_reverse = _parser->getData().rbegin();
it_reverse != _parser->getData().rend();
++it_reverse)
{
std::cout << it_reverse->first << std::endl;
}
上面的代码以正常顺序(而不是反向)进行迭代,当我将数据复制到临时变量时,一切运行良好:
Data tmpData = _parser->getData();
for(...)
我想避免制作数据副本,因为它将成为一张大地图。
请注意_parser
是指针,因此其中的数据不会被多次复制