C++中的vector

1.1 vector

vector是所有相同类型的对象的集合,它通过索引访问。vector通常和容器相关,因为vector包含对象。在使用vector时,需要先加入头文件

#include <vector>
using std::vector;

vector是一个模板,而不是一种类型。所说的vector类型是来自于它所包含的对象的类型,比如:

vector<int> a;
vector<Sales_item> sales_vec;
vector<vector<string>> str;

所以a是一个包含整形数据的向量;sales_vec是包含Sales_item这个自创类型的向量;str是一个包含字符向量的向量

我们不可以引用vector,因为引用本身不是对象;vector是包含对象的容器

对于二级向量vectord的定义,在较早的版本要在结尾的尖括号加上一个空格,便于编译器识别,像这样:

vector<vector<string> >;   //在C++11之前的编译器这样才能识别
vector<vector<string>>;    //现在可以直接这样写,但是较早版本的IDE可能不支持,需要写成上面的格式
1.2 vector的定义和初始化

定义:

vector<string> str;    //初始化空的vector
vector<int> var1;		 //初始化空的vector
vector<int> var2 = var1;   //将var1中的元素拷贝到var2中
vector<int> var3(var1);	   //将var1中的元素拷贝到var2中
vector<int> var4 = str;   //ERR,这两个vector的类型不同

这个初始化在C++11之后才加入的,通过list来初始化vector

vector<string> names = {"nancy", "david", "simileciWH"};
vector<string> names2{"nancy", "david", "simileciWH"};
//注意括号和花括号的含义不同!!!
vector<string> names2("nancy", "david", "simileciWH");  //ERR
1.3 创建特殊个数的元素向量
vector<type> variable(count, value);

vector<int> a(10,-1);  //10个整型的元素,每个元素都初始化为"-1"

vector<string> str(10);  //10个字符串类型的元素,每一个都初始化为空字符串
1.4 在初始化vector时要注意

初始化的数据要与vector对应的类型匹配,

举个栗子:

vector<string> vv1{"hello"};	//v1有一个元素初始化为"hello"
vector<int> vv2("hello");  //ERR
vector<string> vv3{10};		//v3有10个元素,初始化为空字符串
vector<string> vv4{10,"hello"};   //v4有10个元素,全部初始化为"hello"
1.5 向vector中添加元素

在使用vector时,先定义一个空的vector(不指定vector的大小),而在运行过程中添加vector的值,这是非常高效的使用vector的方式

通过vector的成员 push_back来给vector添加元素, push_back通过获得当前的值,然后追加到vector最后一个元素中, 类似于python的append()

举个栗子:

//创建一个包含0~99整型数的vector
vector<int> nums;
for(int i = 0; i < 99; i++)
    nums.push_back(i);
1.6 vector的运算有哪些
vector operations含义
v.empty()如果v为空返回true;否则false。
v.size()返回v的元素个数
v.push_back()向v添加元素
v[number]访问v中元素的方式
v1=v2用v2替换v1中的元素
v = {a,b,c,…}将v中的元素替换成{}中的内容
v1==v2,v1!=v2判断v1和v2中的元素个数和每个元素是否相等
<,<=,>,>=比较大小

举个栗子:

vector<int> v;
v = {1,2,3,4,5,6,7,8,9};
for(auto &i : v) i *= i;
for(auto i : v) cout << i << " ";
cout << endl;

执行结果:

1 4 9 16 25 36 49 64 81                                                     
Press <RETURN> to close this window...   

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值