C++迭代器运算符定义

发布于 2024-12-20 13:26:34 字数 180 浏览 0 评论 0原文

有关迭代器运算符如何工作的“定义”的任何想法或链接?更准确地说:例如,必须实现运算符“==”和“!=”——它们是否必须比较它们所持有的数据的成员(恕我直言,这将是一个问题,因为迭代器一开始就不应该知道数据)?与 .end() 和 .start() 相比如何?对于指针迭代器:它只是地址检查吗?

很高兴听到您的想法或获得定义的链接。

any idea or link concerning the "definition" of how operators of iterators have to work? To be more exact: How excatly do, for instance, operators "==" and "!=" have to be implemented -- do they have to compare members of the data they hold (which imho would be a problem, as the iterator should not know about the data in the first place)? How do you compare to .end() and .start()? For pointer iterators: is it just an address check?

Would be glad to hear about your ideas or get a link to the definition.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

二手情话 2024-12-27 13:26:34

我认为你需要阅读这样的内容: http://stdcxx.apache.org/doc /stdlibref/iterators.html

运算符 ==!= 比较迭代器,而不是它们引用的数据。

I think you need to read something like this: http://stdcxx.apache.org/doc/stdlibref/iterators.html

The operators == and != compare the iterators, not the data they refer to.

你是年少的欢喜 2024-12-27 13:26:34

原始的STL有一个关于迭代器的设计文档

简而言之,它们是指针的泛化,因此 == 应该检查两个迭代器是否指向同一个容器中的同一个项目。指针迭代器确实应该在其指针比较时相等。

begin()rbegin() 相比应该是微不足道的;与 end()rend() 的比较可以通过多种方式完成,例如使其成为等于 size() 的索引一个容器。

The original STL has a design document on iterators.

In short, they are a generalization of pointers, so == should check whether two iterators point at the same item in the same container. Pointer iterators should indeed compare equal when their pointers do.

Comparing to a begin() or rbegin() should be trivial; comparing to an end() or rend() can be done in various ways, like making it an index equal to the size() of a container.

埋情葬爱 2024-12-27 13:26:34

== 和 != 运算符不会比较内容,它们只是检查两个迭代器是否引用同一个对象。

The == and != operators aren't expected to compare the contents, they merely check whether two iterators refer to the same object.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文