Sep 30, 2025
array、vector、list的区别
下面分别介绍 C++ 标准库中的 array
、vector
和 list
的区别:
array 和 vector 的区别
特性 | array | vector |
---|---|---|
定义方式 | std::array<T, N> |
std::vector<T> |
容量 | 固定(编译期已知大小) | 动态(运行时可扩展) |
内存分配 | 通常在栈上(连续空间) | 在堆上(连续空间) |
能否改变大小 | 不能,创建后大小固定 | 可以自动扩容/缩小 |
性能 | 访问速度快(和原生数组一样) | 访问速度快,扩容时有开销 |
用途 | 大小已知且固定的数组 | 需频繁增删元素的场景 |
举例:
1 | std::array<int, 5> arr = {1, 2, 3, 4, 5}; // 固定长度,不能扩容 |
vector 和 list 的区别
特性 | vector | list |
---|---|---|
底层结构 | 数组(连续内存) | 双向链表 |
访问速度 | 随机访问快(O(1)) | 随机访问慢(O(n)) |
插入/删除 | 尾部效率高,头部/中间慢 | 任意位置插入/删除都快 |
内存使用 | 连续空间,内存碎片少 | 每个节点有额外指针开销 |
适用场景 | 需频繁随机访问或尾部操作 | 需频繁在中间插入/删除 |
举例:
1 | std::vector<int> v = {1, 2, 3}; |
总结:
array
:大小固定,适合已知长度的数组。vector
:动态数组,适合大量随机访问和尾部插入。list
:链表,适合频繁在任意位置插入/删除,但不适合随机访问。