在 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)这些移动操作使得我们能够在容器中方便地导航和访问元素。不同类型的迭代器提供了不同级别的移动能力,这取决于它们所关联的容器类型。


