gpt4 book ai didi

c++ - 2个分离数据结构的迭代器

转载 作者:行者123 更新时间:2023-11-30 04:58:44 26 4
gpt4 key购买 nike

我有一个图形类,其中有两个 std::map;这些 map 是私有(private)的,我希望用户只能循环浏览这两个 map ,而不能修改它们。

关键是,(第一点是我从来没有写过标准迭代器)它们必须看起来像只有一张来自外部的 map 。

这样的代码看起来像:

for (auto element : stuff)
{
//do stuff
}

实际上会这样做:

for (auto element : map_1)
{
}
for (auto element : map_2)
{
}

我如何管理第一张 map 和第二张 map 之间的步骤?

最佳答案

在您的自定义迭代器中,存储两个字段:

struct example {
unsigned map_index;
map_iterator it;
};

map_index 告诉您正在迭代哪个 map 。

在递增it之后的递增运算符中,如果it == map_0.end()(我将编号更改为从零开始)然后递增map_index 并将设置为map_1.begin()

使用 {map_1.end(), 1} 作为结束迭代器。

在比较运算符中,首先比较 map_index,如果索引匹配,则只比较 it


也就是说,您可以通过使用现有的通用功能为自己节省大量工作:boost::range::join

关于c++ - 2个分离数据结构的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51542936/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com