vector

一,vector与array之间的区别

vector与array非常的相似,两者唯一的差别在于内存空间的使用。array是静态空间,一旦配置就不能改变;vector是动态空间,随着元素的加入,它会动态的扩充自己的内存空间。实现vector的关键技术,就是对其占用的内存空间的控制以及重新配置时元素移动效率。

 

二,vector的迭代器

vector的底层是用一段连续的内存空间来存储容器中的元素,普通的指针都可以作为vector的迭代器而满足所有的条件因为迭代器所需要的操作,例如:*、->、++、--、+、- 等,普通的指针都具备这些功能。vector支持随机存取,而普通的指针就具备这些功能,所以vector的迭代器是普通的指针。

 

三,vector的内存管理

在vector中添加元素时,如果超过了它的容量,会导致内存的重新配置。重新配置内存并不是在原来的内存的后面添加新的空间,而是以原大小的两倍配置新的内存空间,然后将原来的内容拷贝到新的内存空间,之后释放掉原来的内存空间。因此,对vector的任何操作,一旦导致内存空间的重新配置,指向原vector的所有的迭代器都将失效。

 

四,vector的基本操作

1,初始化操作

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

 

2,添加与获取元素

//在vector的尾部添加一个元素
vect.push_back(6);

//获取头、尾的元素
int y = vect.front();
int x = vect.back();

 

3,删除容器中的元素

//直接弹出容器尾部的元素,但是不会返回这个元素,pop_back()的返回值为void
vect.pop_back();

//删除指定位置的元素
vect.erase(vect.begin());

 

4,其他常用操作

//判断容器是否为空,如果容器中没有元素返回true,否则返回false
vect.empty();

//获取容器中元素的数目
int size = vect.size();

 

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++ 标准库的文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值