c/c++语言开发共享vector类型介绍

一、vector类型简介 标准库:集合或动态数组,我们可以放若干对象放在里面。 vector他能把其他对象装进来,也被称为容器 二、定义和初始化vector对象 (1)空的vector (2)元素拷贝的初始化方式 (3)C++11标准中,用列表初始化方法给值,用{}括起来 (4)创建指定数量的元素 …

一、vector类型简介

标准库:集合或动态数组,我们可以放若干对象放在里面。

vector他能把其他对象装进来,也被称为容器

#include <iostream>  #include <vector>  using namespace std;    struct student{int num;};    int main()  {      vector<int> vjihe; // 表示这个集合对象保存的是int型数据      // <int>:模板,vector本身就是个类模板,<int>实际上就是类模板的实例化过程。      vector<student> vstudlist;// 存放学生类型的集合      vector<vector<string>> strchuan; // 相当于二维的字符串。      vector<int *> vjihe2;      // 不能向集合中装引用      //vector<int &> vjihe3; // 引用知识一个别名,不是对象。      return 0;  }

二、定义和初始化vector对象

(1)空的vector

vector<string> mystr; // 创建一个string类型的空的集合  //push_back()  mystr.push_back(“abc”);  mystr.push_back(“efg”);

(2)元素拷贝的初始化方式

vector<string> mystr2(mystr); // 将mystr元素拷贝给mystr2  vector<string> mystr3 = mystr; // 将mystr元素拷贝给mystr3

(3)c++11标准中,用列表初始化方法给值,用{}括起来

vector<string> mystr4 = {“aaa”,”bbb”,”ccc”};

(4)创建指定数量的元素

// 创建15个int类型的元素,每个元素的值为-200  vector<int> ijihe(15,-200);  // 创建15个int类型的元素,每个元素的值为hello  vector<string> sjihe(15,”hello”);    vector<int> ijihe2(15); // 15个元素,每一个元素值默认为0  vector<string> sjihe(15); // 15个元素,每一个元素值默认为空

(5)多种初始化方式,()一般表示元素数量,{}一般表示元素内容这个概念,但不绝对。

想要正常的通过{}初始化,那么{}里面值的类型,必须要跟vector后面这个<>里面的元素类型相同。

vector<int> i1(10); // 表示创建10个元素,每个元素值为0  vector<int> i2{10}; // 表示创建一个元素,该元素的值为10  vector<string> snor{“hello”}; // 创建一个元素,元素内容为hello  vector<string> s22{10}; // 10个元素,每个元素为空  vector<string> s23{10,,”hello”}; // 10个元素,每一个元素内容为hello  vector<int> i3(10,1);//10个元素,每个元素值为1  vector<int> i4{10,1}; // 2个元素  //vector<int> i4{“hello”}; // 语法错误

三、vector对象上的操作

最常用的是不知道vector里面有多少个元素,需要动态的增加/减少。

一般情况下,先创建空的vector对象。

(1)判断是否为空empty(),返回布尔值

vector<int> ivec;  if(ivec.empty())  {      cout << “ivec为空” << endl;  }

(2)push_back():用于向vector中的末尾添加一个元素

ivec.push_back(1);  ivec.push_back(2);  for(int i = 3; i <= 100; i++)  {      ivec.push_back(i);  }

(3)size():返回元素个数

cout << ivec.size() << endl;

(4)clear():移除所有元素,将容器清空

//ivec.clear();  //cout << ivec.size() << endl;

(5)ivec[n]:返回ivec中第n个元素(n是个整型值),位置从0开始,必须小于.size(),如果引用的下标超过这个范围,或者用[]访问了一个孔的vector,那么就会产生不可预测的结果,编译器发现不了。

cout << ivec[1] << endl; // [0]:1 ,[1]:2

(6)= 赋值

vector<int> ivec2;  ivec2.push_back(111);  ivec2 = ivec; // ivec2得到了100个元素,ivec2原来的元素消失。  ivec2 = {12,13,14,15}; // 用{}的值取代了ivec2中原来的值  cout << ivec2.size() << endl;

(7)==,!= 相等,不相等

两个vector相等,元素数量相等,对应位置元素值也一样,否则就是不相等

int ivec3 = ivec2;  if(ivec3 == ivec2)  {      cout << “ivec3 == ivec2” << endl;  }    ivec3.push_back(3);  if(ivec3 != ivec2)  {      cout << “ivec3 != ivec2” << endl;  }    ivec3.clear();  ivec2.clear();  if(ivec3 == ivec2)  {      cout << “ivec3 == ivec2” << endl;  }

(8)范围for的应用

vector<int> vecvalue{1,2,3,4,5};  for(auto &vecitem : vecvalue) // 引用起到修改变量的作用  {      vecitem *= 2;  }    for(auto vecitem : vecvalue)  {      cout << vecitem << endl;   // 2,4,6,8,10  }

(8)范围for的进一步理解

for(auto vecitem : vecvalue)  {      //vecvalue.push_back(888); // 导致输出彻底乱套      cout << vecitem << endl;  }

在for语句中遍历一个容器等等类似操作,千万不要改动vector容器的容量,增加/删除都不可以,否则会出问题。

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/605087.html

(0)
上一篇 2021年5月13日
下一篇 2021年5月13日

精彩推荐