反向迭代地图,由getter /没有副本访问

时间:2016-04-13 22:02:04

标签: c++ dictionary iterator

我有一个类读取/解析文件并在地图中存储键值对。

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是指针,因此其中的数据不会被多次复制

0 个答案:

没有答案