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() 函数可以确定边界。
网友评论