C++STL容器 – std::vector构造方式与分配值方式总结
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:C++STL容器 – std::vector构造方式与分配值方式总结
原文链接:https://www.stubbornhuang.com/1976/
发布于:2022年02月22日 15:50:36
修改于:2022年02月22日 15:50:55

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
当前分类随机文章推荐
- C++ - std::string字符串格式化方法总结 阅读641次,点赞0次
- C++STL容器 - std::vector构造方式与分配值方式总结 阅读685次,点赞0次
- C++ - std::string与std::wstring相互转换 阅读1744次,点赞0次
- C++11 - override关键字简要介绍 阅读2013次,点赞0次
- C++ - 使用标准库实现事件和委托,信号和槽机制 阅读274次,点赞0次
- C++11 - std::string - stod/stof/stoi/stol/stold/stoll/stoul/stoull,由std::string转换为int/long/float/double等其他类型 阅读3242次,点赞0次
- C++ - 智能指针的正确使用方式 阅读469次,点赞0次
- C++ - 对字符串和图片进行base64编解码 阅读124次,点赞0次
- C++ - 一文搞懂std::future、std::promise、std::packaged_task、std::async的使用和相互区别 阅读170次,点赞0次
- C++ - std::unordered_map中使用结构体或者vector等复杂的数据结构作为Key值 阅读326次,点赞0次
全站随机文章推荐
- 资源分享 - Computer Graphics Principles and Practice (3rd edition) 英文高清PDF下载 阅读2962次,点赞0次
- 资源分享 - 交互式计算机图形学:基于OpenGL着色器的自顶向下方法(第六版),Interactive Computer Graphics - A top-down approach with shader-based OpenGL(Six 6th Edition)中文版PDF下载 阅读583次,点赞0次
- 资源分享 - 深度学习 花书 AI圣经(Deep Learning) 英文pdf下载 阅读2966次,点赞1次
- TensorRT - Using an engine plan file across different models of devices is not recommended and is likely to affect performance or even cause errors 阅读57次,点赞0次
- 资源分享 - Geometric Algebra for Computer Science - An Object-Oriented Approach to Geometry (First Edition) 英文高清PDF下载 阅读2035次,点赞0次
- 资源分享 - Div, Grad, Curl, and All That - An Informal Text on Vector Calculus , Forth Edition 英文高清PDF下载 阅读1393次,点赞0次
- ThreeJS - 修复摄像机近距离模型或者摄像机在某些观察角度3D模型部分或者全部不可见的问题 阅读362次,点赞0次
- 资源分享 - 深度学习入门之Pytorch(廖星宇著)PDF下载 阅读3056次,点赞0次
- 资源分享 - Digital Image Processing , Third Edition 英文高清PDF下载 阅读1646次,点赞0次
- Modern OpenGL从零开始 - 从茫茫多的OpenGL第三方库讲起 阅读3415次,点赞1次
评论
167