阅读量:0
在 C++ 中,迭代器的移动操作主要包括以下几种:
- 前置递增(++):将迭代器向前移动一个元素。对于输入迭代器和前向迭代器,这是唯一有效的移动方式。对于双向迭代器和随机访问迭代器,也可以使用前置递增。
std::vector<int> vec = {1, 2, 3, 4, 5}; auto it = vec.begin(); ++it; // it 现在指向第二个元素 (2)
- 后置递增(++):将迭代器向前移动一个元素,但返回移动前的迭代器位置。对于输入迭代器和前向迭代器,这是唯一有效的移动方式。对于双向迭代器和随机访问迭代器,也可以使用后置递增。
std::vector<int> vec = {1, 2, 3, 4, 5}; auto it = vec.begin(); it++; // it 现在指向第二个元素 (2)
- 前置递减(–):将迭代器向后移动一个元素。这仅对双向迭代器和随机访问迭代器有效。
std::vector<int> vec = {1, 2, 3, 4, 5}; auto it = vec.begin() + 2; // it 指向第三个元素 (3) --it; // it 现在指向第二个元素 (2)
- 后置递减(–):将迭代器向后移动一个元素,但返回移动前的迭代器位置。这仅对双向迭代器和随机访问迭代器有效。
std::vector<int> vec = {1, 2, 3, 4, 5}; auto it = vec.begin() + 2; // it 指向第三个元素 (3) it--; // it 现在指向第二个元素 (2)
- 加法操作(+):将迭代器向前移动指定数量的元素。这仅对随机访问迭代器有效。
std::vector<int> vec = {1, 2, 3, 4, 5}; auto it = vec.begin(); it = it + 2; // it 现在指向第三个元素 (3)
- 减法操作(-):将迭代器向后移动指定数量的元素。这仅对随机访问迭代器有效。
std::vector<int> vec = {1, 2, 3, 4, 5}; auto it = vec.begin() + 3; // it 指向第四个元素 (4) it = it - 2; // it 现在指向第二个元素 (2)
- 加法赋值操作(+=):将迭代器向前移动指定数量的元素。这仅对随机访问迭代器有效。
std::vector<int> vec = {1, 2, 3, 4, 5}; auto it = vec.begin(); it += 2; // it 现在指向第三个元素 (3)
- 减法赋值操作(-=):将迭代器向后移动指定数量的元素。这仅对随机访问迭代器有效。
std::vector<int> vec = {1, 2, 3, 4, 5}; auto it = vec.begin() + 3; // it 指向第四个元素 (4) it -= 2; // it 现在指向第二个元素 (2)
这些移动操作使得我们能够在容器中方便地导航和访问元素。不同类型的迭代器提供了不同级别的移动能力,这取决于它们所关联的容器类型。