📜  C++中的Const vs Regular迭代器与示例(1)

📅  最后修改于: 2023-12-03 14:39:56.973000             🧑  作者: Mango

C++中的Const vs Regular迭代器与示例

在C++中,迭代器(iterator)是一种类似指针的工具,用于遍历STL容器中的元素,STL容器常常包括数组、向量、列表、集合、映射等。

迭代器可分为常规迭代器(regular iterator)和常量迭代器(const iterator)。它们的区别在于对容器的操作是否会对容器本身产生影响。具体如下:

  • 常规迭代器:可用于改变容器中元素的数值,也可以通过解引用操作符修改迭代器指向的元素值
  • 常量迭代器:不能改变容器中元素的数值,只能读取容器中元素的数值
常规迭代器的示例

下面是一个示例代码,用于遍历一个向量,并将每个元素的值都增加一:

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<int> nums = {1, 2, 3, 4};
    vector<int>::iterator it;
    for (it = nums.begin(); it != nums.end(); it++) {
        (*it)++;
    }
    for (it = nums.begin(); it != nums.end(); it++) {
        cout << *it << " ";
    }
    return 0;
}

这段代码中,我们使用了常规迭代器,通过遍历容器中每个元素,并使用解引用操作符将每个元素的值都增加一。输出结果如下:

2 3 4 5
常量迭代器的示例

接下来是一个示例代码,用于遍历一个元素都是整数的列表,并输出每个元素的值:

#include <iostream>
#include <list>

using namespace std;

int main() {
    list<int> nums = {1, 2, 3, 4};
    list<int>::const_iterator it;
    for (it = nums.begin(); it != nums.end(); it++) {
        cout << *it << " ";
    }
    return 0;
}

这段代码中,我们使用了常量迭代器,因此不能使用解引用操作符修改容器中元素的值。输出结果如下:

1 2 3 4
总结

常规迭代器和常量迭代器都是STL容器中遍历元素的工具,常规迭代器可以用于改变容器中元素的数值,而常量迭代器只能读取容器中元素的数值。在使用迭代器时,需要根据需要选择相应类型的迭代器,以保证代码正确性和效率。