c ++:STL为迭代器使用通用的"end()"值?

cmo*_*cmo 3 c++ iterator stl

给定STL容器的所有实例的".end()"迭代器是否指向相同的"过去的"对象?

例如

std::set<int> my_set_1;
// fill  "my_set_1"
std::set<int> my_set_2;
// fill  "my_set_2"

bool same_end_iterator  =       my_set_1.end() == my_set_2.end()    ; 
Run Code Online (Sandbox Code Playgroud)

最后一行依赖于实现吗?

Mik*_*our 10

给定STL容器的所有实例的".end()"迭代器是否指向相同的"过去的"对象?

不,标准不保证这一点,实际上一些容器类型可能不会那样工作.例如std::vector::iterator,通常实现为指向数组元素的指针,end()指向超出数组的末尾.

最后一行依赖于实现吗?

最后一行给出了未定义的行为.您无法比较来自不同集合的迭代器 - 包括过去的迭代器.