C++初学者指南第一步---5.介绍std::vector

C++初学者指南第一步—5.介绍std::vector

注意std代表C++标准库的命名空间,vector(向量)是标准库中的一种数据和对象容器:动态数组,用vector向量这个名称不太准确,因为历史原因一直保留下来,适应就好。

  • C++的默认动态数组
  • 数组 =可以保存相同类型的不同值/对象
  • 动态 =大小可以在运行时更改

这是一个简短的介绍,作为C++初学者指南的一部分。如果您正在寻找包含指导方针、最佳实践和常见错误的更完整的接口概述,请参阅此页

1.初始化/访问

#include <vector>                   //头文件
std::vector<int> v {2, 7, 9};       //用3哥元素初始化vector
cout << v.size() << '\n';           //3 (vector中的元素个数)
cout << v[0] << '\n';               //2
cout << v[1] << '\n';               //7
v[1] = 4;                           //赋予新的值
cout << v[1] << '\n';               //4
cout << v.front() << '\n';          //2(第一个元素)
cout << v.back()  << '\n';          //9(最后一个元素)

注意
在这里插入图片描述
这里声明和定义了两个int型vector,第一个vector是用花括号初始化,是用花括号里的值对动态数组进行初始化。第二个vector用小括号是调用了vector的构造函数进行初始化,第一个参数是元素个数,第二哥参数是元素的值,这里是2。

2.添加元素

vector<T>::push_back(Element)

在vector的末尾添加一个类型为 T 的元素
在这里插入图片描述
运行这段代码

3.Resizing调整大小

在这里插入图片描述
运行这段代码

4.在尾部删除元素

在这里插入图片描述
运行这段代码

5. 复制一直是深拷贝!

vector被称作常规类型,也就是说,它在以下方面与 int 的行为类似:

  • 深度复制:复制创建一个新的向量对象,并复制其中包含的所有对象。
  • 深度赋值:将所有包含对象从源复制到赋值目标。
  • 深度比较:比较两个vector时,比较其包含所有对象的值
  • 深拥有:销毁vector将销毁所有包含的对象
    C++标准库和生态系统中的大多数类型都是常规的。

这里讲的有些简单容易误解我再详细说一下:

  1. 深拷贝(Deep Copying):
    当你拷贝一个 vector (例如 vector v2 = v1;)时,会创建一个全新的 vector 对象,并且将原 vector 中的所有元素(这里是整数)都拷贝过去。
    这意味着对拷贝后的 vector 进行修改(例如添加或删除元素)不会影响到原来的 vector。
  2. 深赋值(Deep Assignment):
    当你将一个 vector 赋值给另一个 vector (例如 v1 = v2;)时,源 vector (v2) 中的所有元素都会被拷贝到目标 vector (v1) 中。
    赋值之后,这两个 vector 包含的元素是相同的,可以独立地进行修改而不会影响到对方。
  3. 深比较(Deep Comparison):
    当你比较两个 vector (例如 v1 == v2)时,比较是逐个元素进行的。
    比较会检查两个 vector 中的所有元素是否完全相等,比较的是元素的具体值。
  4. 深拥有(Deep Ownership):
    当一个 vector 被销毁(例如当它超出作用域或被显式删除)时,它包含的所有元素也会被销毁。
    这确保了元素占用的内存被正确释放,避免了内存泄漏。
    在这里插入图片描述
    运行这段代码
    请注意,如果向量包含很多元素(或者其中包含的类型复制代价很高),那么复制向量可能会非常耗时。

附上原文链接

如果文章对您有用请随手点个赞,谢谢!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值