operator++在前向迭代器上做什么?

据我了解。std::unordered_mapstd::unordered_set 使用前向迭代器。

我可以这样做

auto it = unordered_map_instance.begin(); 
it++; 

但我不能做这样的事

auto it = unordered_map_instance.begin(); 
it = it + 1; 

我一直认为 ++ 只是简单地递增1,但对于前向迭代器似乎不是这样。谁能解释一下 ++ 对前向迭代器有什么作用?我好像在谷歌上找不到这个操作符。+

解决方案:

如果你参考 [iterator.requirements] 从C++标准。iterator 要求 operator++() (和 operator++(int) 对于大多数类型来说)是过载的。这些不能与 operator+(int)这就相当于你的第二个例子。这 ++ 经营者是 与加法相同。

至于什么是 operator++() 实际上,它只是在列表中向前移动了一个元素,也就是下一个元素。比如说。

std::map<int,int> map_instance = { { 1,1 }, {2,2}, {3,3} };
auto it = map_instance.begin(); // it points to {1,1}
it++;  // now it points to {2,2}

递增一个以上的元素可以用以下方法实现 std::advance

给TA打赏
共{{data.count}}人
人已打赏
未分类

使用 VennDiagram 在 RStudio 檢視器中檢視 venn.diagram (不只是寫入檔案)?

2022-9-8 5:30:40

未分类

Djongo使用ArrayField在makemigrations上抛出Apps No Loaded错误。

2022-9-8 5:41:37

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索