相同点
- 元素类型一致:两者都用于存储相同类型的多个元素(如
int
、double
等)。 - 支持随机访问:都可以通过下标直接访问任何元素。
- 顺序存储:元素在内存中是顺序存储的,支持线性遍历。
各自优势
vector
的优势
-
动态扩展能力:
优势:std::vector
允许在运行时动态调整大小,可以随时增加或删除元素。如:vec.push_back(4);
可以在末尾添加新元素。 -
自动内存管理:
优势:std::vector
自动处理内存分配和释放,避免了手动管理内存的复杂性。无需调用delete
,std::vector
会在其生命周期结束时自动释放内存。 -
丰富的操作方法:
优势:提供了如push_back
、pop_back
、insert
、erase
、size
和capacity
等成员函数,支持多种操作。如:vec.insert(vec.begin() + 1, 10);
可以在指定位置插入元素。 -
安全访问:
优势:提供了at()
方法来进行边界检查,避免越界访问的问题。例如:vec.at(10);
如果超出范围会抛出std::out_of_range
异常。 -
与 STL 算法兼容:
优势:可以方便地与 STL 算法(如排序、查找)一起使用。示例:std::sort(vec.begin(), vec.end());
可以对std::vector
进行排序。
C 数组的优势
-
简单高效:C 数组具有较低的开销和更高的性能,尤其在内存访问上,因为没有额外的动态分配和管理开销,直接在栈上分配内存,访问速度更快。
-
固定大小:大小在编译时确定,有利于内存优化和性能提升。
-
简单的语法:语法简单明了,通过下标直接访问元素,易于理解。
-
适用于某些场景:在对性能要求极高的场景中,C 数组提供了更精细的内存控制。
std::vector
提供了更强大的功能和灵活性,适合需要动态调整大小和丰富操作的场景,而 C 数组则适用于固定大小和对性能有严格要求的场景。