C++ vector的常见用法

C++ vector的常见用法

一、vector 的初始化:可以有4种方式:

1)vector<int> a(10); //定义了10个整型元素的向量,但没有给出初值2)vector<int> a(10,1); //定义了10个整型元素的向量,且给出每个元素的初值为13)vector<int> a(b); //用b向量来创建a向量,整体复制性赋值4)vector<int> a(b.begin(),b.begin+3); //定义了a值为b中第0个到第2个(共3个)元素5)vector<vector<int>> a(10, vector<int>(10));//嵌套初始化

二、vector对象的几个重要操作:
(1)将b的0~2个元素构成的向量赋给a

vector<int> b = { 1, 2, 3, 4, 5, 6 };
vector<int> a;
a.assign(b.begin(), b.begin() + 3);

a 为: {1,2,3}

(2)a有5个元素,且每个元素为1

vector<int> a;
a.assign(5, 1);

a 为:{1,1,1,1,1}

(3)返回a的最后一个元素

vector<int> a = { 1, 2, 3, 4, 5, 6 };
cout << a.back()<<endl;

输出为:6

(4)返回a的第一个元素

vector<int> a = { 1, 2, 3, 4, 5, 6 };
cout << a.front()<< endl;

输出为:1

(5)返回a的第i个元素

vector<int> a = { 1, 2, 3, 4, 5, 6 };
cout << a[3]<< endl;

输出为:4

(6)清空a中的元素

vector<int> a = { 1, 2, 3, 4, 5, 6 };
a.clear();
cout << a.size() << endl;

输出为:0

(7)判断a是否为空,空则返回1,不空则返回0

vector<int> a = { 1, 2, 3, 4, 5, 6 };
cout << a.empty() << endl;
a.clear();
cout << a.empty() << endl;

输出为:0
输出为:1

(8)删除a向量的最后一个元素

vector<int> a = { 1, 2, 3, 4, 5, 6 };
a.pop_back();

a为:{1,2,3,4,5}

(9)删除a中第1个(从第0个算起)到第2个元素

vector<int> a = { 1, 2, 3, 4, 5, 6 };
a.erase(a.begin() + 1, a.begin() + 3);

a为:{1,4,5,6}

(10)在a的最后一个向量后插入一个元素,其值为7

vector<int> a = { 1, 2, 3, 4, 5, 6 };
a.push_back(7);

a为:{1,2,3,4,5,6,7}

(11)在a的第1个元素(从第0个算起)的位置插入数值7

vector<int> a = { 1, 2, 3, 4, 5, 6 };
a.insert(a.begin() + 1, 7);

a为:{1,7,2,3,4,5,6}

(12)在a的第1个元素(从第0个算起)的位置插入3个数,其值都为7

vector<int> a = { 1, 2, 3, 4, 5, 6 };
a.insert(a.begin() + 1, 3, 7);

a为:{1,7,7,7,2,3,4,5,6}

(13)b为数组,在a的第1个元素(从第0个算起)的位置插入b的第3
个元素到第5个元素(不包括b+6)

int b[] = { 7, 8, 9, 10, 11, 12, 13 };
vector<int> a = { 1, 2, 3, 4, 5, 6 };
a.insert(a.begin() + 1, b + 3, b + 6);

a为:{1,10,11,12,2,3,4,5,6}

(14)返回a中元素的个数;

vector<int> a = { 1, 2, 3, 4, 5, 6 };
cout << a.size() << endl;

输出为:6

(15)返回a在内存中总共可以容纳的元素个数

vector<int> a(10);
cout << a.capacity() << endl;

输出为:10

(16)将a的元素个数调至10个,多则删,少则补

vector<int> a = { 1, 2, 3, 4, 5, 6 };
a.resize(10);

a为:{1,2,3,4,5,6,0,0,0,0}

(17)将a的现有元素个数调至10个,多则删,少则补,其值为2

vector<int> a = { 1, 2, 3, 4, 5, 6 };
a.resize(10, 2);

a为:{1,2,3,4,5,6,2,2,2,2}

(18)将a的容量(capacity)扩充至10

vector<int> a = { 1, 2, 3, 4, 5, 6 };
a.reserve(10);
cout << a.capacity() << endl;

输出为:10

(19)b为向量,将a中的元素和b中的元素进行整体性交换

vector<int> b = { 7, 8, 9, 10, 11, 12 };
vector<int> a = { 1, 2, 3, 4, 5, 6 };
a.swap(b);

a为:{ 7, 8, 9, 10, 11, 12 }
b为:{ 1, 2, 3, 4, 5, 6 }

(20)a==b; //b为向量,向量的比较操作还有!=,>=,<=,>,<

(21)顺序取反

 reverse(a.begin(),a.end());

(22)求和

#include<numeric>
double sum = std::accumulate(a.begin(), a.end(),0);
  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值