1 std::vector

std::vector是可动态调整大小的序列容器,可以根据需要自动进行增加内存或者减少内存。相比于静态数组,std::vector占用更多的内容空间,主要是为了分配更多的内存空间用于未来元素增加所带来的内存消耗。一般来说,std::vector的所占内存大小不会在每次压入元素的时候进行修改,而是在所额外分配的内存将要耗尽时进行重新分配。

头文件

#include <vector>

2 std::vector的构造方式

2.1 构造函数

2.1.1 默认构造函数

std::vector<int> myVector;

默认构造函数构造一个空的std::vector。

2.1.2 初始化列表构造

std::vector<int> myVector{1,2,3,4,5};

结果:

1 2 3 4 5

2.1.3 使用其他std::vector进行拷贝构造

std::vector<int> myVector{1,2,3,4,5};
std::vector<int> myVector1(myVector);

结果:

1 2 3 4 5
1 2 3 4 5

2.1.4 使用其他std::vector迭代器进行构造

std::vector<int> myVector{1,2,3,4,5};
std::vector<int> myVector2(myVector.begin(), myVector.end());

结果:

1 2 3 4 5
1 2 3 4 5

当然,迭代器范围是可选的,比如:

std::vector<int> myVector{1,2,3,4,5};
std::vector<int> myVector2(myVector.begin(), myVector.end()-2);

结果:

1 2 3 4 5
1 2 3

2.1.5 使用同一元素的重复多个元素副本进行构造

如下列,元素10重复5次

std::vector<int> myVector(5,10);

结果:

10 10 10 10 10

3.1 使用assign为std::vector分配值

3.1.1 使用同一元素重复多个副本为std::vector分配值

std::vector<int> assignVector;
assignVector.assign(10,1);

结果:

1 1 1 1 1 1 1 1 1 1

3.1.2 使用其他std::vector的迭代器为std::vector分配值

std::vector<int> myVector{1,2,3,4,5};

std::vector<int> assignVector;
assignVector.assign(myVector.begin(), myVector.end());

结果:

1 2 3 4 5
1 2 3 4 5

当然,迭代器范围是可选的,比如:

std::vector<int> myVector{1,2,3,4,5};

std::vector<int> assignVector;
assignVector.assign(myVector.begin(), myVector.end()-3);

结果:

1 2 3 4 5
1 2

3.1.3 使用初始化列表为std::vector分配值

std::vector<int> assignVector;
assignVector.assign({125,256,321,124});

结果:

125 256 321 124