Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;迭代器等式 C++ C++ STD库是如何实现的,例如向量迭代器?它允许您在常规迭代器和反向迭代器上进行相等性测试,什么样的设计允许这样做_C++_Design Patterns_C++ Standard Library - Fatal编程技术网

C++;迭代器等式 C++ C++ STD库是如何实现的,例如向量迭代器?它允许您在常规迭代器和反向迭代器上进行相等性测试,什么样的设计允许这样做

C++;迭代器等式 C++ C++ STD库是如何实现的,例如向量迭代器?它允许您在常规迭代器和反向迭代器上进行相等性测试,什么样的设计允许这样做,c++,design-patterns,c++-standard-library,C++,Design Patterns,C++ Standard Library,编辑:下面有人回答了重载==方法的实际代码,这不是我想要的,所以这个问题的范围可能不清楚。我所说的“std库如何实现向量迭代器”更多的是一个设计层面的问题,迭代器类使用什么样的继承树,这样做的一些设计权衡,其他替代设计,等等。如果有人能对此有所了解,那就太好了。这是来自: 迭代器包含一个指针\u Ptr作为成员。这是所有迭代器的典型特征。它们是集合中引用的包装。向量迭代器可能只是包装指针。如果两个向量迭代器指向同一个对象,那么它们是相等的。但是不要忽略一个事实,即标准库有许多实现。有一天,你可能

编辑:下面有人回答了重载==方法的实际代码,这不是我想要的,所以这个问题的范围可能不清楚。我所说的“std库如何实现向量迭代器”更多的是一个设计层面的问题,迭代器类使用什么样的继承树,这样做的一些设计权衡,其他替代设计,等等。如果有人能对此有所了解,那就太好了。

这是来自


迭代器包含一个指针
\u Ptr
作为成员。这是所有迭代器的典型特征。它们是集合中引用的包装。

向量迭代器可能只是包装指针。如果两个向量迭代器指向同一个对象,那么它们是相等的。但是不要忽略一个事实,即标准库有许多实现。有一天,你可能会遇到一个疯狂的疯子或绝对的天才(有时是同一件事,但并不总是)在做一些完全奇怪的事情时达到了标准。我正在寻找一个更面向设计的答案,你可以在编辑中看到我要找的细节。
bool operator==(const _Myiter& _Right) const
    {   // test for iterator equality
        _Compat(_Right);
         return (this->_Ptr == _Right._Ptr);
    }