在 C++ 中,迭代器的比较操作通常用于检查两个迭代器是否指向同一个元素或者检查迭代器是否已经到达容器的末尾。这些比较操作包括等于(==)、不等于(!=)、小于(<)、大于(>)、小于等于(<=)和大于等于(>=)。
对于迭代器的比较操作,需要注意以下几点:
std::vector
的迭代器与一个 std::list
的迭代器进行比较。std::vector
、std::array
或 std::deque
的迭代器),可以使用所有比较操作。而对于双向迭代器(如 std::list
或 std::set
的迭代器),只能使用等于(==)和不等于(!=)操作。std::forward_iterator
),只能比较相等性。但是,从 C++17 开始,单向迭代器也支持不等于(!=)操作。end()
方法返回的迭代器时,需要确保比较的迭代器是有效的。例如,如果你试图比较一个已经被删除的元素的迭代器与容器的 end()
迭代器,结果是未定义的。以下是一个简单的示例,展示了如何在 C++ 中使用迭代器的比较操作:
#include<iostream>
#include<vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
std::vector<int>::iterator it1 = vec.begin();
std::vector<int>::iterator it2 = vec.begin() + 2;
if (it1 == it2) {
std::cout << "it1 and it2 are equal."<< std::endl;
} else {
std::cout << "it1 and it2 are not equal."<< std::endl;
}
if (it1 < it2) {
std::cout << "it1 is less than it2."<< std::endl;
} else {
std::cout << "it1 is not less than it2."<< std::endl;
}
return 0;
}
输出:
it1 and it2 are not equal.
it1 is less than it2.