C++中的迭代器是什么?

  • Post category:cplus

C++中的迭代器(iterator)是一种抽象的数据类型,它提供了一种访问容器内部元素的方式。迭代器可以被看作一个指向容器中元素的指针,每次迭代器移动一步都可以访问到下一个或上一个元素。

迭代器是STL(标准模板库)的重要组成部分,许多STL算法和容器都需要使用迭代器实现。迭代器在STL中的使用可以让代码更加通用,因为迭代器对于任何数据类型都是可用的。

下面是两条使用迭代器的示例说明:

  1. 迭代访问数组元素
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int> v{1, 2, 3, 4, 5};

    // 使用迭代器遍历元素并输出
    for (vector<int>::iterator iter = v.begin(); iter != v.end(); ++iter)
    {
        cout << *iter << " ";
    }

    return 0;
}

在这个示例中,我们使用迭代器遍历了一个存储整型数字的vector容器中的每一个元素,并将其输出到屏幕上。vector容器的begin()函数返回一个迭代器,指向容器的第一个元素,end()函数返回一个迭代器,指向容器的最后一个元素之后的位置(因此这里需要用不等于符号判断是否到达了容器末尾)。

  1. 迭代访问map元素
#include <iostream>
#include <map>
#include <string>

using namespace std;

int main()
{
    map<string, int> m;
    m["apple"] = 20;
    m["orange"] = 30;
    m["banana"] = 15;

    // 使用迭代器遍历元素并输出
    for (map<string, int>::iterator iter = m.begin(); iter != m.end(); ++iter)
    {
        cout << iter->first << " : " << iter->second << endl;
    }

    return 0;
}

在这个示例中,我们使用迭代器遍历了一个存储字符串键和整型值的map容器中的每一个元素,并将其输出到屏幕上。map容器中的迭代器是一个pair类型,其中pair.first是键值,pair.second是对应的值。我们可以使用箭头符号访问这两个值。

总结:迭代器是C++ STL中的重要组成部分,提供了一种访问容器内部元素的通用方式,使得代码更加简洁明了。在使用迭代器时,需要注意容器的begin()和end()函数,以及迭代器所使用的数据类型。