vector容器和数组有什么区别?
·
1. 内存本质
- 普通数组静态内存,固定大小,不能扩容;栈上分配,空间有限。
- vector动态数组,堆上分配,可自动扩容,大小灵活可变。
2. 大小是否可变
- 数组:定义后大小固定,不能改。
- vector:随时增删元素,自动扩容,支持动态增长。
3. 内存空间
- 数组:内存连续,但大小写死。
- vector:堆上连续内存,底层也是连续数组,支持随机访问。
4. 越界安全
- 数组:
[]不做越界检查,越界直接崩溃、乱码。 - vector:
[]不检查.at()带越界检查,越界抛异常,更安全。
5. 自带功能
- 普通数组:只有存数据,无任何成员方法。
- vector:自带
size、capacity、empty、push_back、erase、clear、reserve等丰富接口。
6. 初始化与赋值
- 数组:不能整体赋值、不能直接拷贝。
- vector:支持拷贝构造、直接赋值、容器互换。
7. 迭代器支持
- 数组:没有迭代器,不能直接用 STL 算法。
- vector:支持迭代器,可直接用
sort、find、for_each等 STL 算法。
8. 生命周期
- 数组:栈数组随函数结束自动释放;全局数组程序结束释放。
- vector:对象销毁自动释放堆内存,不用手动管理内存,不容易泄漏。
一句话总结
数组固定大小、不能扩容、功能少、不安全;vector 动态扩容、堆内存管理、接口丰富、支持迭代器、更安全好用。
更多推荐

所有评论(0)