C++中迭代器的移动操作是如何实现的

avatar
作者
筋斗云
阅读量:0

在 C++ 中,迭代器的移动操作主要包括以下几种:

  1. 前置递增(++):将迭代器向前移动一个元素。对于输入迭代器和前向迭代器,这是唯一有效的移动方式。对于双向迭代器和随机访问迭代器,也可以使用前置递增。
std::vector<int> vec = {1, 2, 3, 4, 5}; auto it = vec.begin(); ++it; // it 现在指向第二个元素 (2) 
  1. 后置递增(++):将迭代器向前移动一个元素,但返回移动前的迭代器位置。对于输入迭代器和前向迭代器,这是唯一有效的移动方式。对于双向迭代器和随机访问迭代器,也可以使用后置递增。
std::vector<int> vec = {1, 2, 3, 4, 5}; auto it = vec.begin(); it++; // it 现在指向第二个元素 (2) 
  1. 前置递减(–):将迭代器向后移动一个元素。这仅对双向迭代器和随机访问迭代器有效。
std::vector<int> vec = {1, 2, 3, 4, 5}; auto it = vec.begin() + 2; // it 指向第三个元素 (3) --it; // it 现在指向第二个元素 (2) 
  1. 后置递减(–):将迭代器向后移动一个元素,但返回移动前的迭代器位置。这仅对双向迭代器和随机访问迭代器有效。
std::vector<int> vec = {1, 2, 3, 4, 5}; auto it = vec.begin() + 2; // it 指向第三个元素 (3) it--; // it 现在指向第二个元素 (2) 
  1. 加法操作(+):将迭代器向前移动指定数量的元素。这仅对随机访问迭代器有效。
std::vector<int> vec = {1, 2, 3, 4, 5}; auto it = vec.begin(); it = it + 2; // it 现在指向第三个元素 (3) 
  1. 减法操作(-):将迭代器向后移动指定数量的元素。这仅对随机访问迭代器有效。
std::vector<int> vec = {1, 2, 3, 4, 5}; auto it = vec.begin() + 3; // it 指向第四个元素 (4) it = it - 2; // it 现在指向第二个元素 (2) 
  1. 加法赋值操作(+=):将迭代器向前移动指定数量的元素。这仅对随机访问迭代器有效。
std::vector<int> vec = {1, 2, 3, 4, 5}; auto it = vec.begin(); it += 2; // it 现在指向第三个元素 (3) 
  1. 减法赋值操作(-=):将迭代器向后移动指定数量的元素。这仅对随机访问迭代器有效。
std::vector<int> vec = {1, 2, 3, 4, 5}; auto it = vec.begin() + 3; // it 指向第四个元素 (4) it -= 2; // it 现在指向第二个元素 (2) 

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

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!