【发布时间】:2019-01-03 16:36:21
【问题描述】:
我有一个图形类,其中有两个 std::map;这些地图是私有的,我希望用户只能循环浏览这两个地图,而不是修改它们。
关键是,(第一点是我从未编写过标准迭代器)它们必须看起来像只有一个来自外部的地图。
这样的代码看起来像:
for (auto element : stuff)
{
//do stuff
}
实际上会这样做:
for (auto element : map_1)
{
}
for (auto element : map_2)
{
}
我如何管理第一张地图和第二张地图之间的步骤?
【问题讨论】:
-
当然,制作你自己的迭代器,一旦你到达
map_1.end(),将它设置为map_2.begin(),然后让你的最终迭代器只是map_2.end() -
哦,当解决方案就在您眼前,而您却没想到时……谢谢!
-
@NathanOliver 你必须知道迭代器是否指向
map_1,才能知道它是否定义好与map_1.end()进行比较,所以并不是那么简单。