C++中迭代器的移動(dòng)操作是如何實(shí)現(xiàn)的

c++
小樊
84
2024-09-11 18:34:42

在 C++ 中,迭代器的移動(dòng)操作主要包括以下幾種:

  1. 前置遞增(++):將迭代器向前移動(dòng)一個(gè)元素。對(duì)于輸入迭代器和前向迭代器,這是唯一有效的移動(dòng)方式。對(duì)于雙向迭代器和隨機(jī)訪問(wèn)迭代器,也可以使用前置遞增。
std::vector<int> vec = {1, 2, 3, 4, 5};
auto it = vec.begin();
++it; // it 現(xiàn)在指向第二個(gè)元素 (2)
  1. 后置遞增(++):將迭代器向前移動(dòng)一個(gè)元素,但返回移動(dòng)前的迭代器位置。對(duì)于輸入迭代器和前向迭代器,這是唯一有效的移動(dòng)方式。對(duì)于雙向迭代器和隨機(jī)訪問(wèn)迭代器,也可以使用后置遞增。
std::vector<int> vec = {1, 2, 3, 4, 5};
auto it = vec.begin();
it++; // it 現(xiàn)在指向第二個(gè)元素 (2)
  1. 前置遞減(–):將迭代器向后移動(dòng)一個(gè)元素。這僅對(duì)雙向迭代器和隨機(jī)訪問(wèn)迭代器有效。
std::vector<int> vec = {1, 2, 3, 4, 5};
auto it = vec.begin() + 2; // it 指向第三個(gè)元素 (3)
--it; // it 現(xiàn)在指向第二個(gè)元素 (2)
  1. 后置遞減(–):將迭代器向后移動(dòng)一個(gè)元素,但返回移動(dòng)前的迭代器位置。這僅對(duì)雙向迭代器和隨機(jī)訪問(wèn)迭代器有效。
std::vector<int> vec = {1, 2, 3, 4, 5};
auto it = vec.begin() + 2; // it 指向第三個(gè)元素 (3)
it--; // it 現(xiàn)在指向第二個(gè)元素 (2)
  1. 加法操作(+):將迭代器向前移動(dòng)指定數(shù)量的元素。這僅對(duì)隨機(jī)訪問(wèn)迭代器有效。
std::vector<int> vec = {1, 2, 3, 4, 5};
auto it = vec.begin();
it = it + 2; // it 現(xiàn)在指向第三個(gè)元素 (3)
  1. 減法操作(-):將迭代器向后移動(dòng)指定數(shù)量的元素。這僅對(duì)隨機(jī)訪問(wèn)迭代器有效。
std::vector<int> vec = {1, 2, 3, 4, 5};
auto it = vec.begin() + 3; // it 指向第四個(gè)元素 (4)
it = it - 2; // it 現(xiàn)在指向第二個(gè)元素 (2)
  1. 加法賦值操作(+=):將迭代器向前移動(dòng)指定數(shù)量的元素。這僅對(duì)隨機(jī)訪問(wèn)迭代器有效。
std::vector<int> vec = {1, 2, 3, 4, 5};
auto it = vec.begin();
it += 2; // it 現(xiàn)在指向第三個(gè)元素 (3)
  1. 減法賦值操作(-=):將迭代器向后移動(dòng)指定數(shù)量的元素。這僅對(duì)隨機(jī)訪問(wèn)迭代器有效。
std::vector<int> vec = {1, 2, 3, 4, 5};
auto it = vec.begin() + 3; // it 指向第四個(gè)元素 (4)
it -= 2; // it 現(xiàn)在指向第二個(gè)元素 (2)

這些移動(dòng)操作使得我們能夠在容器中方便地導(dǎo)航和訪問(wèn)元素。不同類(lèi)型的迭代器提供了不同級(jí)別的移動(dòng)能力,這取決于它們所關(guān)聯(lián)的容器類(lèi)型。

0