gpt4 book ai didi

c++ - 为什么它需要它!=obj.end() 尽管每个迭代器都应该知道自己何时终止?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:00:56 26 4
gpt4 key购买 nike

下面的问题刚刚闪过我的脑海。对于 c++ STL 迭代器,一种常见的做法是使用如下内容:

for (iterator it=obj.begin(); it!=obj.end(); it++)

我想知道的是,obj.begin() 实际上可以告诉“它”何时停止,这将使 for 循环看起来像:

for (iterator it=obj.begin(); !it.end(); it++)

这样做的好处是使迭代器更加独立,并且可以将 (iterator end()) 保存在容器类中。

最佳答案

有时您想做一些事情而不是遍历容器的全部内容。例如,您可以创建一对仅迭代容器前半部分的迭代器。因此,使用一个单独的对象来表示结束更加灵活,因为它允许用户更好地控制放置范围结束的位置。

你是对的,对于遍历所有内容的最常见情况来说,这有点不方便。然而,C++11 提供了一个基于范围的 for 循环,这使得遍历整个容器变得非常容易,所以就像编程中的许多事情一样,这实际上只是选择正确的结构以最好地表达您的意图的问题。

关于c++ - 为什么它需要它!=obj.end() 尽管每个迭代器都应该知道自己何时终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10358280/

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