Bootstrap

C++使用库Vecotr和自己手写数组的优缺点对比

目录

一、背景

二、库Vector和手写数组优缺点对比

2.1、C-style 数组

2.1.1、优点:

2.1.2、缺点:

2.1.3、示例:

2.2、编写一个类似于std::vector的动态数组类

2.2.1、说明

2.3、std::vector优缺点

2.2.1、优点:

2.2.2、缺点:

2.2.3、示例:

三、何时选择 C-style 数组或 std::vector

3.1、使用 C-style 数组的场景:

3.2、使用 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;
}

2.2、编写一个类似于std::vector

;