文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C++标准模版库之vector容器怎么使用

2023-07-05 17:07

关注

今天小编给大家分享一下C++标准模版库之vector容器怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

vector容器介绍

容器顾名思义就是存放数据的东西,和我们的水桶用于装水是一个原理。vector的功能和水桶一样,就是用来装东西的,我们的水桶可以用于装水,也可以用来装米饭,稻子,汽油等。我们的容器也是可以装各种数据,基本类型的数据,自定义的数据类型,并且vector还提供了迭代器来很方便的访问这些数据,下面就让我们一起看下如何使用C++的vector

vector 的使用

在我们使用vector之前,我们要先引入vector的头文件,就和我们使用Java的类要先import对应的包一样

#include<vector>

1. vector存放内置数据类型数据

vector 存放内置数据类型数据其实就是存放基本数据类型的数据,如int,float,double,string 等,接下来请看存放内置数据类型数据的方法:

创建vector并插入数据

创建vector并且插入数据:

   // 创建了一个vector 容器,数组    vector<int> v;        // 向容器中插入数据    v.push_back(10);    v.push_back(20);    v.push_back(30);    v.push_back(40);

遍历vector

遍历vector主要是依靠vector的begin()和end()方法,begin()方法代表是vector的开始,end代表的是vector的结束,遍历vector有三种方式

方式1:使用While循环的方式:

// 起始迭代器,指向容器中第一个元素vector<int>::iterator itBegin = v.begin();// 结束迭代器vector<int>::iterator itEnd = v.end();while(itBegin != itEnd){     cout<<*itBegin<<endl;     tBegin++;}

方式2:使用for循环

 for(vector<int>::iterator it = v.begin();it !=v.end(); it++){        cout<< *it << endl;    }

方式3:利用STL提供的遍历算法 首先我们提供一个打印的函数,

void myPrint(int val){    cout << val << endl;}

然后把函数名传递到for_each()函数中,如下所示:

 // 第三种方式,利用STL提供的遍历算法    for_each(v.begin(),v.end(),myPrint);

2.vector存放自定义数据类型

vector 也可以存放自定义的类型,例如我们自定义了一个Person类:

class Person{ public:        Person(string name,int age)        {            this->mName = name;            this->mAge = age;        }        string mName;        int mAge;};

然后创建vector并添加Person类型的数据

    vector<Person> v;    Person p1("aa",10);    Person p2("bb",20);    Person p3("cc",30);    Person p4("dd",40);// 添加数据    v.push_back(p1);    v.push_back(p2);    v.push_back(p3);    v.push_back(p4);

遍历数据的时候我们需要注意的是我们拿到的元素是Person引用,如下面代码中的it,代表的是Person的引用,我们解引用后得到的是Person,如果要访问姓名可以使用(*it).mName,或者是it->mName来访问

  // 遍历数据    for(vector<Person>::iterator it = v.begin();    it != v.end();it ++){        //cout<<"姓名: " << (*it).mName <<         // " ,age:" << (*it).mAge << endl;        cout<<"姓名: " << it->mName <<         " ,age:" << it->mAge << endl;    }

所有测试代码

#include<iostream>#include<vector>#include<string>using namespace std;void myPrint(int val){    cout << val << endl;}void test01(){    // 创建了一个vector 容器,数组    vector<int> v;    // 向容器中插入数据    v.push_back(10);    v.push_back(20);    v.push_back(30);    v.push_back(40);    //    // 通过迭代去访问容器中的数据    //    vector<int>::iterator itBegin     //   = v.begin();//起始迭代器,指向容器中第一个元素    //    vector<int>::iterator itEnd = v.end();//结束迭代器    //    // 第一种遍历方式    //    while(itBegin != itEnd){    //     cout<<*itBegin<<endl;    //     itBegin++;    //    }    // 第二种遍历方式    for(vector<int>::iterator it = v.begin();    it !=v.end(); it++){        cout<< *it << endl;    }    // 第三种方式,利用STL提供的遍历算法    for_each(v.begin(),v.end(),myPrint);}// vector 存放自定义类型class Person{ public:        Person(string name,int age)        {            this->mName = name;            this->mAge = age;        }        string mName;        int mAge;};void test02(){    vector<Person> v;    Person p1("aa",10);    Person p2("bb",20);    Person p3("cc",30);    Person p4("dd",40);// 添加数据    v.push_back(p1);    v.push_back(p2);    v.push_back(p3);    v.push_back(p4);    // 遍历数据    for(vector<Person>::iterator it = v.begin();    it != v.end();it ++){        //cout<<"姓名: " << (*it).mName <<        // " ,age:" << (*it).mAge << endl;        cout<<"姓名: " << it->mName <<         " ,age:" << it->mAge << endl;    }}// 存放自定义数据类型 指针void test03(){       vector<Person*> v;    Person p1("aa",10);    Person p2("bb",20);    Person p3("cc",30);    Person p4("dd",40);// 添加数据    v.push_back(&p1);    v.push_back(&p2);    v.push_back(&p3);    v.push_back(&p4);    // 遍历数据    for(vector<Person *>::iterator it = v.begin();    it != v.end();it ++){        cout<<"::姓名: " << (*it)->mName <<         " ,::age:" << (*it)->mAge << endl;    }}int main(){    test03();    return 0;}

3.vector 容器嵌套容器

容器嵌套容器意思就是在vector中存放vector,把vector作为vector的元素存放起来,我们一起来看下具体怎么做 首先我们创建一个vector容器,用于存放vector类型的数据

vector< vector<int> > v;

然后我们创建4个小容器,这四个小容器作为我们开头创建的大容器的元素,并为每个小容器存放一些值用于测试

 // 创建小容器    vector<int> v1;    vector<int> v2;    vector<int> v3;    vector<int> v4;// 向小容器中添加数据    for(int i = 0;i<4;i++){        v1.push_back(i+1);        v2.push_back(i+2);        v3.push_back(i+3);        v4.push_back(i+4);    }

然后我们将小容器存放到大容器里面

 // 将小容器插入到大容器    v.push_back(v1);    v.push_back(v2);    v.push_back(v3);    v.push_back(v4);

最后是遍历容器,第一次拿到的it是一个容器,还需要遍历it,然后才是值,所以需要使用两个for循环

  for(vector< vector<int> >:: iterator it     = v.begin(); it != v.end();it ++){       // (*it) 是一个容器       for(vector<int>::iterator vit        = (*it).begin();vit != (*it).end();vit ++){        cout<< *vit << " ";       }       cout<< endl;    }

通过大容器把所有数据遍历一遍,我们看遍历得到每一个元素的类型可以参考<>里面的类型,<>中是啥(*it)就是啥,如果是vector<int> 那么拿到的(*it)就是整型数据,如果是vector<vector<int>> 拿到的就是整型类型的容器

以上就是“C++标准模版库之vector容器怎么使用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯