当前位置:首页C++程序设计 > 正文

C++中vector和array区别

作者:野牛程序员:2023-05-19 09:09:45C++程序设计阅读 2747

在C++中,vector和array都是用于存储和管理多个元素的数据结构,但它们之间有几个关键的区别。

  1. 大小的灵活性:数组(array)的大小在声明时就需要确定,并且无法在运行时改变。而vector的大小可以在运行时动态调整,可以添加或删除元素。

  2. 内存管理:数组的内存分配是静态的,它在声明时分配一块连续的内存区域,数组的大小决定了所分配内存的大小。相反,vector使用动态内存分配,它会自动处理内存的分配和释放,并且可以根据需要自动调整内存的大小。

  3. 访问元素:数组和vector都可以通过索引访问元素,但数组的索引范围是从0到数组大小减1,而vector的索引范围可以超过其当前大小,因为它会自动调整大小以适应访问。

  4. 复制和传递:数组的复制和传递比较麻烦,通常需要手动编写循环来复制数组的内容或者使用库函数。而vector可以直接通过赋值操作或传递给函数来复制和传递。

  5. STL功能:vector是C++标准模板库(STL)中的一部分,它提供了许多方便的成员函数和算法来处理向量,例如添加、删除、排序等。数组没有这些内置的功能,需要手动编写代码来实现。

综上所述,如果需要在程序中使用固定大小的连续内存区域,并且不需要频繁地改变大小或使用STL的功能,可以选择数组。如果需要动态管理元素的大小、自动内存管理以及使用STL的功能,可以选择vector。


下面是一个简单的代码演示,展示了如何使用数组和vector以及它们的一些区别:

#include <iostream>
#include <vector>

int main() {
    // 使用数组
    int array[5] = {1, 2, 3, 4, 5};

    // 使用vector
    std::vector<int> vec = {1, 2, 3, 4, 5};

    // 访问元素
    std::cout << "Array element at index 2: " << array[2] << std::endl;
    std::cout << "Vector element at index 2: " << vec[2] << std::endl;

    // 大小的灵活性
    vec.push_back(6); // 添加元素到vector
    std::cout << "Vector size after push_back: " << vec.size() << std::endl;

    // 复制和传递
    std::vector<int> vecCopy = vec; // 复制vector
    std::cout << "Copied vector size: " << vecCopy.size() << std::endl;

    // 使用STL功能
    std::sort(vec.begin(), vec.end()); // 对vector进行排序

    return 0;
}

在上面的代码中,首先创建了一个数组 array 和一个vector vec 来存储相同的元素。然后,通过索引访问数组和vector中的元素,并打印出它们的值。接下来,使用 push_back 函数将一个新元素添加到vector中,并打印出vector的大小。然后,使用 vecCopy = vec 将vector复制到另一个vector中,并打印出复制后的vector的大小。最后,使用 std::sort 函数对vector进行排序。

这个简单的示例展示了数组和vector在使用和功能方面的一些区别。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击