目录
一、vector和array的区别
std::vector和std::array都是C++ STL中的容器类模板,用于存储一组元素。它们之间的区别在于:
std::vector是动态数组,可以动态调整容器大小,而std::array是静态数组,其大小在编译时就已经确定,不能改变。std::vector依赖动态分配/释放内存,这是比较耗时的,而std::array的内存大小固定,编译时直接分配一段栈上/静态存储区内存即可,速度远快于std::vector。std::vector支持动态扩容,可以在运行时动态增加或减少容器大小,而std::array的大小在编译时就已经确定,不能改变。std::vector可以使用迭代器访问元素,而std::array可以使用下标运算符访问元素。std::vector的元素在内存中不一定是连续的,而std::array的元素在内存中是连续的。
因此,如果程序需要频繁的创建销毁容器,大小固定(而且不会爆栈).则选用 std::array 较为合适如果创建销毁不是特别频繁,且容器大小不确定,可以选用 std::vector。在正确使用下的 std::vector和 std::array它们的性能差距在大部分情况下不会构成瓶颈。
二、vector和array的使用方法
-
std::vector的使用方法:- 创建一个空的
std::vector对象:std::vector<T> vec; - 创建一个指定大小的
std::vector对象:std::vector<T> vec(n); - 在
std::vector的末尾添加元素:vec.push_back(value); - 访问
std::vector中的元素:vec[i]或vec.at(i) - 获取
std::vector的大小:vec.size() - 清空
std::vector中的所有元素:vec.clear() - 删除
std::vector中的最后一个元素:vec.pop_back() - 删除
std::vector中的指定元素:vec.erase(vec.begin() + i); - 迭代访问
std::vector中的元素:for (auto it = vec.begin(); it != vec.end(); ++it) { ... }
- 创建一个空的
-
std::array的使用方法:- 创建一个空的
std::array对象:std::array<T, N> arr; - 创建一个指定大小的
std::array对象:std::array<T, N> arr = { ... }; - 访问
std::array中的元素:arr[i]或arr.at(i) - 获取
std::array的大小:arr.size()
- 创建一个空的
三、vector和array的使用案例
std::vector的使用案例:- 用于存储动态大小的元素集合,例如,存储用户输入的字符串。
- 用于实现动态数组,例如,存储图像的像素值。
- 用于实现栈和队列,例如,存储函数调用的参数和局部变量。
- 用于实现哈希表,例如,存储键值对。
- 用于实现图和树的遍历,例如,存储节点的指针。
std::array的使用案例:- 用于存储固定大小的元素集合,例如,存储一组常量。
- 用于实现静态数组,例如,存储颜色的RGB值。
- 用于实现矩阵和张量,例如,存储图像的像素值。
- 用于实现缓冲区,例如,存储网络数据包。
- 用于实现栈和队列,例如,存储函数调用的参数和局部变量。

582

被折叠的 条评论
为什么被折叠?



