c++ - STL迭代器相等性是如何建立的?

标签 c++ stl

我想知道,STL 迭代器的相等性 (==) 是如何建立的? 它是简单的指针比较(因此基于地址)还是更花哨的东西?

如果我有来自两个不同列表对象的两个迭代器并比较它们,结果是否总是错误的?

如果我将一个有效值与超出范围的值进行比较怎么办?这总是错误的吗?

最佳答案

如果需要,迭代器类可以定义重载的 == 运算符。所以结果取决于operator==的实现。

您真的不应该比较来自不同容器的迭代器。我认为如果您这样做,一些调试 STL 实现会发出警告信号,这将帮助您在代码中发现这种错误使用情况。

关于c++ - STL迭代器相等性是如何建立的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/844768/

相关文章:

c++ - C2995 : template already defined

c++ - std、boost 或其他具有隐式键的哈希表容器的广泛实现

C++:迭代 STL 容器的正确方法

c++ - 在抛出 'std::bad_alloc' what(): std::bad_alloc 的实例后终止调用

c++ - 混合使用 C、C++ 和 Fortran 代码

C++ 并行循环

c++ - 尝试为图像缓冲区分配内存时错误的 ptr 值

c++ - 在 C++ 中将矩阵高效分解为方形子矩阵

c++ - 用于通过快速迭代按值从任何位置删除的容器

c++ - 在 std::queue 中存储可变大小的 block ?