目录
三、何时选择 C-style 数组或 std::vector
一、背景
在 C++ 编程中,数组是基础的数据结构之一。除了传统的 C-style 数组,C++ 标准库还提供了强大的 std::vector 容器。了解这两者的优缺点,以及如何在不同场景中使用它们,对于编写高效、可维护的代码非常重要。
二、库Vector和手写数组优缺点对比
2.1、C-style 数组
2.1.1、优点:
- 性能: C-style 数组直接操作内存,性能开销最低,适合对性能要求极高的场景。
- 内存布局: 连续的内存布局,有利于缓存友好性和更快的内存访问。
- 控制: 更细粒度的控制,如手动管理内存、指定数组的对齐方式等。
2.1.2、缺点:
- 安全性: 缺少边界检查,容易导致缓冲区溢出等内存错误。
- 灵活性: 固定大小,无法在运行时动态调整大小。
- 复杂性: 手动管理内存和操作麻烦且容易出错,尤其是在涉及动态分配和释放内存时。
2.1.3、示例:
#include <iostream>
void printArray(int* array, size_t size) {
for (size_t i = 0; i < size; ++i) {
std::cout << array[i] << " ";
}
std::cout << std::endl;
}
int main() {
const size_t size = 5;
int array[size] = {1, 2, 3, 4, 5}; // 静态分配
printArray(array, size);
// 动态分配
int* dynamicArray = new int[size];
for (size_t i = 0; i < size; ++i) {
dynamicArray[i] = i + 1;
}
printArray(dynamicArray, size);
delete[] dynamicArray; // 记得释放动态分配的内存
return 0;
}