在C++中实现Python中的列表(List)

2022-01-23  本文已影响0人  LabVIEW_Python

Python的列表非常好用,可以存放任意类型的数据,可以能够动态增加和删减数据。C++的STL中有一个vector,它是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。

那到底什么是vector呢?
Vector(向量)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,Vector是一个能够存放任意类型的动态数组 ,是C++ array容器的“升级版”。array容器实现的是静态数组(容量固定的数组),而 vector 实现的是一个动态数组,即可以进行元素的插入和删除,在此过程中,vector 会动态调整所占用的内存空间,整个过程无需人工干预.

vector对象函数常用成员函数:

范例程序如下:

#include<vector>
#include<string>
#include<iostream>

using namespace std;

int main()
{
    //创建vector
    vector<string> labels{"speedlimit","crosswalk","trafficlight","stop"};

    //使用迭代器遍历vector
    cout << "使用迭代器遍历vector:" << endl;
    for (auto i = labels.begin(); i < labels.end(); i++)
    {
        cout << *i << endl;
    }

        //像普通数据那样通过[]访问元素
    cout << endl << "像普通数据那样通过[]访问元素:" << endl;
    cout << "labels[0] is:" << labels[0] << endl;

    //使用经过边界检查的索引访问元素
    cout << endl << "使用经过边界检查的索引访问元素:" << endl;
    cout << "labels.at(0) is:" << labels.at(0) << endl;

    //向vector开头插入:Fake
    labels.insert(labels.begin(), "Fake");
    cout << endl << "向vector开头插入:Fake:" << endl;
    cout << "labels.at(0) is:" << labels.at(0) << endl;

    cout << endl << "使用迭代器遍历vector:" << endl;
    for (auto i = labels.begin(); i < labels.end(); i++)
    {
        cout << *i << endl;
    }

    cout << endl << "使用cbegin迭代器遍历vector:" << endl;
    for (auto i = labels.cbegin(); i < labels.cend(); i++)
    {
        cout << *i << endl;
    }

    cout << endl << "auto遍历vector:" << endl;
    for (auto label: labels)
    {
        cout << label << endl;
    }

    return 0;
}
运行结果如下: vector范例运行结果
上一篇 下一篇

猜你喜欢

热点阅读