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
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:C++STL容器 – std::vector构造方式与分配值方式总结
原文链接:https://www.stubbornhuang.com/1976/
发布于:2022年02月22日 15:50:36
修改于:2023年06月26日 20:38:05
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
52