c++ vector

vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector是一个容器,它能够存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,可以动态改变大小。

一、初始化

vector<int> v1;  //构造一个空的vector

vector<int> v2(3);  //构造一个空间大小为5,并且5个元素(有默认值)的vector

vector<int> v3(5,1);  //构造一个空间大小为5,并且初始值为1的vector

vector<int> v4(v3); //拷贝构造vector

二、重要操作

1.常识性操作

1.1 元素的个数

//返回数组v2中元素的个数
v2.size();
//结果为3

1.2 修改元素个数

//将v2的元素个数调至5个,多则删(从尾部删),少则补
v2.resize(5);
//结果为 0 0 0 0 0
//将v2的元素调至7个,多则删(从尾部删),少则补,补的值为2
v2.resize(7, 2);
//结果为 0 0 0 0 0 2 2

1.3 取第一个和最后一个元素的值

//返回v2的第一个元素0
v2.front();
//返回v2的最后一个元素2
v2.back();

2.插入

2.1 在最后一个向量后插入一个元素

v1.push_back(1);
//此时容器v1中有了元素1

2.2 在中间插入元素

//在v3容器的第一个元素后插入2
v3.insert(v3.begin()+1, 2);
//由以前的1 1 1 1 1
//变为 1 2 1 1 1 1
//在v3容器的第二个元素后插入插入2个元素3
v3.insert(v3.begin()+2, 2, 3);
//由以前的1 2 1 1 1
//变为 1 2 3 3 1 1 1
//b = {5,6,7,8,9}
//在v3的第4个元素后插入数组b的第1到第3个元素(即6,7(包含第一个,不包含第3个))
v3.insert(v3.begin()+4, b+1, b+3);
//由以前的1 2 3 3 1 1 1
//变为 1 2 3 3 6 7 1 1 1 1

3.删除

3.1 清空元素

//将清空v2中的元素
v2.clear();

3.2 判断是否为空

//若为空返回true,不空则返回false
v2.empty();

3.3 删除最后一个元素

//删除v3的最后一个元素
v3.pop_back();
//v3变为 1 2 3 3 6 7 1 1 1

3.4 删除部分元素

//删除v3中的第5个和第6个元素(即6,7)
v3.erase(v3.begin()+4, v3.begin()+6);
//v3结果为 1 2 3 3 1 1 1

三、像数组中插入元素

3.1 向向量中添加元素

//向向量中添加元素
for(int i=0; i<3; i++){
	v1.push_back(i);
}
//v1的结果为 0 1 2

3.2 从数组中选择元素向向量中添加

//从数组a中选择部分元素向向量v1中添加
v1.clear();
int a[6]={1,2,3,4,5,6};
for(int i=0; i<3; i++){
	v1.push_back(a[i]);
}
//此时v1的结果为 1 2 3

3.3 从现有向量中选择元素向向量中添加

int a[6]={1,2,3,4,5,6};
vector<int> b;
vector<int> c(a+1,a+5);
for(vector<int>::iterator it=c.begin();it<c.end();it++){
	b.push_back(*it);
}
//b的结果为 2 3 4 5

误区

//这种做法是错误的
vector<int> a;
for(int i=0;i<10;i++)
    a[i]=i;

四、顺序访问

4.1 方式1–通过下标读取

//顺序访问v3的元素
for(int i=0; i<v3.size(); i++){
		cout<<v3[i]<<endl;
	}

4.2 方式2–通过遍历器方式读取

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

五、重要函数

vector<int> v5;
	for(int i=1; i<=5; i++){
		v5.push_back(i);
	}
//此时v5为1 2 3 4 5

5.1 逆置–reverse

//将v5的元素逆置
reverse(v5.begin(), v5.end());
//此时v5为 5 4 3 2 1

5.2 排序–sort

//将v5的元素排序
sort(v5.begin(), v5.end()); 
//此时为 1 2 3 4 5 

5.3 查找某个元素–find

//在v5中查找元素4,若存在则返回在向量中的位置
std::vector<int>::iterator it;
it = find(v5.begin(),v5.end(),4);
cout<<*it<<endl;
//输出结果为4

5.4 复制–copy

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值