顺序容器_vector

一、总述

1、因为vector容纳着其他对象,所以它也常被称为容器。
2、vector是模板而不是类型。
3、使用vector,必须包含头文件

#include<vector>

4、vector是可变大小数组。支持快速随机访问。在尾部之外的位置插入或者删除元素可能很慢。
5、vector将元素保存在连续的内存空间中。

二、vector的操作

1、定义和初始化

vector<~> v1v1是一个空的vector,执行默认初始化
vector<~> v2(v1)v2包含v1所有元素的副本
vector<~> v2=v1等价于v2(v1)
vector<~> v3(n,val)v3包含了n个重复的元素,每个元素值都是val
vector<~> v4(n)v4包含了n个重复执行了值初始化的对象
vector<~> v5{a,b,c…}v5包含了初始值个数的元素,每个元素被赋予相应的初始值
vector<~> v5={a,b,c…}等价于v5{a,b,c,…}

v1和v2的类型相同。

2、其他操作

v.empty()如果v不包含任何元素,返回真;否则返回假
v.size()返回v中的元素个数
v.push_back( t )向v的尾部添加一个值为t的元素
v[n]返回v中第n个位置上元素的引用
v1=v2用v2中的元素拷贝替换v1中的元素
v1={a,b,c…}用列表中的元素拷贝替换v1中的元素
v1==v2v1和v2相等当且仅当他们的元素数量相同且对应位置的元素值都相同
v1!=v2
<,<=,>,>=以字典序进行比较

3、添加元素

a、提供了一个函数,push_back(),向尾部添加一个元素。每次都是向尾部添加元素。

vector<int> v2;  //空vector对象
for(int i=0;i!=100;i++)
v2.push_back(i);  //循环结束,v2有0-99的元素。

*1)如果循环体内包含有向vector对象添加元素的语句,则不能使用范围for循环。
*2)不能使用下标形式添加元素。

b、insert()函数,在任意位置插入元素

c.insert(p,t)在迭代器p指向的元素之前插入一个值为t的元素
c.insert(p,n,t)在迭代器p指向的元素之前插入n个值为t的元素
c.insert(p,b,e)将迭代器b和e指定的范围内的元素插入到迭代器p指向的元素之前
c.insert(p,il)il是一个花括号包围的元素值列表,将这些给定值插入到迭代器p指向的元素之前

4、访问元素

有多种方法访问vector对象的元素。
1)范围for循环,访问元素

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

运行结果:
在这里插入图片描述
2)使用下标运算符获取元素

vector<int> v{ 1,2,3,4,5,6,7,8,9 };
    for (auto i=0;i!=v.size();i++)
        cout << v[i] << " ";

运算结果:
在这里插入图片描述

*使用下标运算符时,只能访问已经存在的元素,而不能用于添加元素。

3)利用迭代器

vector<int> v{ 1,2,3,4,5,6,7,8,9 };
    for (auto i=v.begin(); i != v.end(); i++)
        cout <<*i<<" ";

运行结果:
在这里插入图片描述

5、删除元素

c.pop_back()删除c中的尾元素。函数返回void
c.erase§删除迭代器p所指定的元素,返回一个指向被删元素之后元素的迭代器
c.erase(b,e)删除迭代器b和e所指定范围内的元素,返回一个指向最后一个被删除元素之后元素的迭代器
c.clear()删除c中的所有元素

*删除元素的成员函数并不检查其参数。在删除元素之前,程序员必须确保它是存在的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值