C++迭代器的基本操作有哪些

avatar
作者
猴君
阅读量:0

C++中的迭代器(Iterator)是一种用于遍历容器(如数组、向量、列表等)的对象。迭代器提供了对容器元素的访问,并支持某些基本操作。以下是C++迭代器的基本操作:

  1. 解引用(Dereference):使用*运算符可以获取迭代器当前指向的元素。例如:

    std::vector<int> vec = {1, 2, 3}; std::vector<int>::iterator it = vec.begin(); int value = *it; // value 现在是 1 
  2. 成员访问(Member Access):对于复杂类型的容器(如结构体或类),可以使用->运算符访问其成员。例如:

    struct Person {     std::string name; };  std::vector<Person> people = {{"Alice"}, {"Bob"}}; std::vector<Person>::iterator it = people.begin(); std::string name = it->name; // name 现在是 "Alice" 
  3. 自增(Increment):使用++运算符可以将迭代器移动到下一个元素。例如:

    std::vector<int> vec = {1, 2, 3}; std::vector<int>::iterator it = vec.begin(); ++it; // it 现在指向第二个元素(值为 2) 
  4. 自减(Decrement):对于支持双向迭代器(Bidirectional Iterator)的容器(如std::setstd::multisetstd::mapstd::multimap等),可以使用--运算符将迭代器移动到上一个元素。例如:

    std::set<int> s = {1, 2, 3}; std::set<int>::iterator it = s.find(2); --it; // it 现在指向第一个元素(值为 1) 
  5. 比较(Comparison):可以使用==!=运算符比较两个迭代器是否相等或不相等。例如:

    std::vector<int> vec = {1, 2, 3}; std::vector<int>::iterator it1 = vec.begin(); std::vector<int>::iterator it2 = vec.begin() + 1; bool isEqual = (it1 == it2); // isEqual 是 false bool isNotEqual = (it1 != it2); // isNotEqual 是 true 
  6. 赋值(Assignment):可以使用=运算符将一个迭代器赋值给另一个迭代器。例如:

    std::vector<int> vec = {1, 2, 3}; std::vector<int>::iterator it1 = vec.begin(); std::vector<int>::iterator it2; it2 = it1; // it2 现在指向第一个元素(值为 1) 
  7. 距离(Distance):对于支持随机访问迭代器(Random Access Iterator)的容器(如std::vectorstd::arraystd::deque等),可以使用-运算符计算两个迭代器之间的距离。例如:

    std::vector<int> vec = {1, 2, 3}; std::vector<int>::iterator it1 = vec.begin(); std::vector<int>::iterator it2 = vec.begin() + 1; int distance = it2 - it1; // distance 是 1 
  8. 数组索引(Array Indexing):对于支持随机访问迭代器的容器,还可以使用[]运算符访问迭代器指向的元素。例如:

    std::vector<int> vec = {1, 2, 3}; std::vector<int>::iterator it = vec.begin(); int value = it[1]; // value 现在是 2 

请注意,并非所有容器都支持所有这些操作。例如,std::forward_list只支持单向迭代,因此不支持递减、随机访问和比较操作。在使用迭代器时,请确保了解所使用的容器类型及其支持的操作。

广告一刻

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