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++ - 使用模板和智能指针构建一个双向链表工具类 阅读64次,点赞0次
- C++11 - 使用std::codecvt进行字符编码转换需要注意的时间效率问题 阅读772次,点赞1次
- C++ - 使用Crypto++/CryptoPP加解密库对字符串或者文件进行AES256加密 阅读940次,点赞1次
- C++11/std::thread - 线程管理join/detach 阅读1661次,点赞0次
- C++STL容器 - std::map容器修改、元素操作总结 clear,insert,emplace,erase,swap,merge,extract,insert_or_assign等 阅读292次,点赞0次
- C++STL容器 – std::vector容器修改、元素操作总结 push_back,emplace_back,emplace,insert,erase,pop_back,clear,resize,swap 阅读347次,点赞1次
- GCC/GG++中编译优化选项-O -O0 -O1 -O2 -O3 -Os -Ofast -Og -Oz各自的区别和作用 阅读379次,点赞0次
- C++ - 使用ffmpeg读取视频旋转角度并使用OpenCV根据旋转角度对视频进行旋转复原 阅读678次,点赞0次
- C++11 - 封装std::thread,增加子线程启动、暂停、唤起、停止功能 阅读1518次,点赞0次
- C++ - 函数返回多个返回值的方法总结 阅读703次,点赞0次
全站随机文章推荐
- C++STL容器 – std::vector容器修改、元素操作总结 push_back,emplace_back,emplace,insert,erase,pop_back,clear,resize,swap 阅读347次,点赞1次
- ThreeJS - 动态更换fbx模型的某个子Mesh现有的纹理贴图为指定的纹理贴图 阅读1547次,点赞1次
- 资源分享 - Vulkan应用开发指南 , Vulkan Programming Guide - The Official Guide to Learning Vulkan中文版PDF下载 阅读143次,点赞0次
- C++11 - 使用std::thread,std::shared_future,std::promise并行化/多线程化for循环,提升处理速度 阅读714次,点赞0次
- CMake - 设置Debug或者Release编译模式 阅读177次,点赞0次
- 资源分享 - 神经网络与深度学习应用实战(刘凡平著)PDF下载 阅读1604次,点赞0次
- 资源分享 - 解读基金:我的投资观与实践(季凯帆,康峰著)PDF下载 阅读1069次,点赞0次
- WordPress - 插件WP Editor.md 在网站更换为https后无法正确加载 阅读3264次,点赞0次
- 资源分享 - C++程序设计语言(第4部分 标准库),原书第4版 高清PDF下载 阅读1234次,点赞2次
- Pytorch - 内置的CTC损失函数torch.nn.CTCLoss参数详解与使用示例 阅读48次,点赞0次
评论
148