《C++ Primer Plus》笔记>容器

STL -> vector:
vector 类似于 string 类,也是一种动态数组。
在调用时可以在末尾附加或者中间插入新数据。
基本上,vector 是使用 new 创建动态数组的替代品。
事实上,vector 自动使用 new 和 delete 来管理内存。
vector 可以在插入或者添加值时自动调整长度,所以可以将初始长度设置为零,调整长度需要用到 vector 包中的各种方法。

#include <vector>
//...
using namespace std;
vector<int> vi; // vi 是一个vector<int>对象
int n;
cin >> n;
vector<double> vd (n); 
// vd 是一个长度为n的vector<double> 对象

STL -> array:
array 类长度固定,位于std中,使用静态内存分配(栈)。
因此其效率和数组相同,但更为方便和安全。

#include <array>
...
using namespace std;
array<int,6> ai; // ai 是一个长度为5的array<int>对象
array<double, 4> ad = {1.2, 2.1, 3.43, 4.3};

数组、vector、array之间的比较:
vector和array也不会检查超界错误。
a2[-2] = 5 // 错误,但是允许
可以使用类方法来检查。
a2.at(1) = 2.3 // 等同于a2[1] = 2.3
另外还有 begin() 和 end() 函数可以确定边界。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容