vector

本文深入讲解C++标准库中的vector容器,包括概念、构造函数、赋值、大小调整、元素添加与移除、数据存取及插入删除操作。通过实例演示vector的各种用法,适合初学者和进阶读者。

1 vector的概念

vector是将元素置于一个动态数组中加以管理的容器。vector可以随机存取元素,支持索引值直接存取, 用[]操作符或at()方法对元素进行操作。
在这里插入图片描述
vector尾部添加或移除元素非常快速。但是在中部或头部插入元素或移除元素比较费时。
在这里插入图片描述
(图中的描述有点问题,应该是size和capacity。)


2 vector的常用方法

2.1 构造函数

//默认构造函数 元素个数为0, 所占内存空间为0
vector<int> v1;     //一个存放int的vector容器
vector<float> v2;   //一个存放float的vector容器
vector<student> v2; //一个存放student的vector容器

//带参构造函数
vector(beg,end);    //构造函数将[beg, end)区间中的元素拷贝给本身。注意该区间是左闭右开的区间,beg和end均为迭代器
vector(n,elem);   //构造函数将n个elem拷贝给本身
vector(const vector &v1);  //拷贝构造函数

int test[]={1, 2, 3, 4, 5};
vector<int> v3(test, test+2);

有如下代码:

vector<string> str_vector{10};	// 有10个元素,每个元素都是空串

2.2 vector的赋值

v2.assign(2, 888);//第一种玩法  改变原来vector 中的元素个数和值
v2.assign(v3.begin(), v3.end());//第二种玩法,使用迭代器重新赋值

int test1[]={1, 2, 3, 4, 5};
v2.assign(test1, test1+3);//第三种玩法,使用指针赋值
v2 = v3;//第四种玩法,赋值运算

2.3 vector的大小

vector.size();	   //返回容器中元素的个数
vector.empty();	   //判断容器是否为空
vector.resize(num);   //重新指定容器的长度为num,若容器变长,则以默认值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除。
vector.resize(num, elem);  //重新指定容器的长度为num,若容器变长,则以elem值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除

2.4 vector末尾的添加移除操作

v2.push_back(1);  //在容器尾部加入一个元素
v2.pop_back();    //移除容器中最后一个元素

2.5 vector的数据存取

第一 :使用下标操作 v2[0] = 100;
第二 :使用at 方法 如: v2.at(2) = 100;
第三 :接口返回的引用 v2.front() 和 v2.back()。

注意:第一和第二种方式必须注意越界,越界后将会抛出异常!如果当前vector为空,进行数据存取也是会抛出异常。

2.6 vector的插入

vector.insert(pos,elem);   //在pos位置插入一个elem元素的拷贝,返回新数据的位置。
vector.insert(pos,n,elem);   //在pos位置插入n个elem数据,无返回值。
vector.insert(pos,beg,end);   //在pos位置插入[beg,end)区间的数据,无返回值 

2.7 vector的删除

//1. 把整个vector 都干掉
v2.clear();
cout<<"调用 v2.clear() 后"<<endl;

//2.干掉单个元素
v2[1] = 888;
v2.erase(v2.begin()+1);

//3. 干掉多个元素
v2.erase(v2.begin(), v2.begin()+3);

参考资料:

  1. C语言进阶剖析教程
  2. C/C++从入门到精通-高级程序员之路【奇牛学院】
05-29
在 C++ 中,vector 是一个动态数组容器,可以存储任意类型的数据。使用 vector 可以方便地进行动态内存分配和管理,而不需要手动进行内存分配和释放。 vector 提供了一系列的成员函数,可以方便地进行元素的插入、删除、查找和访问等操作。以下是一些常用的操作: 1. 创建 vector 对象: ```c++ #include <vector> std::vector<int> vec; // 创建一个空的 vector std::vector<int> vec1(10); // 创建一个包含 10 个默认值的 vector std::vector<int> vec2(10, 0); // 创建一个包含 10 个值为 0 的 vector std::vector<int> vec3 = {1, 2, 3, 4}; // 创建一个包含 4 个元素的 vector,初始值为 1, 2, 3, 4 std::vector<int> vec4(vec3); // 创建一个与 vec3 完全相同的新 vector ``` 2. 访问 vector 中的元素: ```c++ std::vector<int> vec = {1, 2, 3, 4}; std::cout << vec[0] << std::endl; // 访问第一个元素,输出 1 std::cout << vec.at(2) << std::endl; // 访问第三个元素,输出 3 std::cout << vec.front() << std::endl; // 访问第一个元素,输出 1 std::cout << vec.back() << std::endl; // 访问最后一个元素,输出 4 ``` 3. 插入和删除元素: ```c++ std::vector<int> vec = {1, 2, 3, 4}; vec.push_back(5); // 在末尾插入元素 5 vec.insert(vec.begin() + 2, 10); // 在第三个位置插入元素 10 vec.erase(vec.begin() + 1); // 删除第二个元素 ``` 4. 获取 vector 中的信息: ```c++ std::vector<int> vec = {1, 2, 3, 4}; std::cout << vec.size() << std::endl; // 输出 vector 的大小,即元素个数,输出 4 std::cout << vec.empty() << std::endl; // 判断 vector 是否为空,输出 0(因为不为空) ``` vector 还提供了一些其他的函数,如排序、反转、查找等,具体可以参考 C++ 标准库的文档。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值