vector nums = {1, 2, 3, 1, 4, 5, 2, 1, 4};和int nums[]={1, 2, 3, 1, 4, 5, 2, 1, 4};的区别是什么?

vector<int> nums = {1, 2, 3, 1, 4, 5, 2, 1, 4}; 是使用 C++ 中的 vector 容器来创建一个整数类型的动态数组,该数组的元素为 {1, 2, 3, 1, 4, 5, 2, 1, 4}

int nums[] = {1, 2, 3, 1, 4, 5, 2, 1, 4}; 是使用 C++ 中的数组来创建一个固定大小的整数类型数组,该数组的元素为 {1, 2, 3, 1, 4, 5, 2, 1, 4}

主要区别如下:

  1. 容器类型不同vector 是 C++ 中的标准库容器,可以动态调整大小,提供更多的方法和功能。而数组是一种原生的数据结构,大小在创建时就确定,并且没有内置的方法或函数来方便地操作。
  2. 内存管理方式不同vector 内部使用堆(Heap)来存储元素,会自动进行内存管理,当添加或删除元素时会自动调整分配的内存空间。而数组是在栈(Stack)上分配连续的内存空间,长度一经确定,不可改变。使用堆,而且在栈上分配空间>
  3. 传递方式不同vector 可以作为函数参数进行传递,而数组在作为函数参数时会自动转换为指针,传递的是指向数组首元素的指针。voertor可以做为参数,而一般数组可能不可以,就是vector可以把自身转化为指针>
  4. 使用的成员函数和操作方式不同vector 提供了一系列成员函数和方法,如 push_back()pop_back()size() 等来操作其中的元素。而数组使用索引访问元素,没有类似 size() 这样的方法。
    还有就是vector有很多操作方法,可以更加快速的对数组进行操作>

总的来说,vector 是更灵活和方便的容器,适用于动态大小的数组需求,而数组则适用于固定大小的数组需求,或者在特定场景下对性能有要求的情况。

vector

vector 是 C++ 标准库中的一个动态数组容器(Dynamic Array Container),可以看作是 C++ 的数组增强版。

vector 可以在运行时动态地调整大小,并且支持快速随机访问元素,可以在尾部插入或删除元素,也可以在中间插入或删除元素。vector 内部使用连续的、按照顺序排列的存储空间来存储元素,在索引访问元素时可以直接通过指针计算元素地址,因此访问速度较快。

vector 定义在 <vector> 头文件中,使用时需要包含这个头文件。下面是一个简单示例:

#include <vector>
#include <iostream>

int main() {
    std::vector<int> vec; // 创建一个 int 类型的 vector

    vec.push_back(1); // 在 vector 尾部添加一个元素 1
    vec.push_back(2); // 在 vector 尾部添加一个元素 2
    vec.push_back(3); // 在 vector 尾部添加一个元素 3

    std::cout << "vector 中的元素为:";
    for (int i = 0; i < vec.size(); ++i) {
        std::cout << vec[i] << " "; // 访问 vector 中的元素
    }
    std::cout << std::endl;

    return 0;
}

上述代码中,我们首先创建了一个 vector 对象 vec,并使用 push_back() 方法在尾部添加了三个元素。然后,我们使用 size() 方法获取 vector 中元素的个数,使用循环和索引访问方式依次输出了所有元素。注意,不能使用越界的方式访问 vector 中的元素,否则会导致程序崩溃。

总之,vector 是一个非常实用的容器,能够方便地管理数组动态大小,并且拥有许多便捷的操作函数,适用于许多编程场景。

vector的方法

vector 是 C++ STL 中的一个标准容器(Standard Container),提供了一系列的方法来管理和操作动态数组。

下面是 vector 常用的方法介绍:

  1. push_back():在 vector 的尾部添加新元素,可以用于向 vector 中添加元素。push_back用于在尾部添加元素

  2. pop_back():删除 vector 尾部的元素,可以用于从 vector 中删除元素。和push_back一样删除元素就是pop_back()我猜pop是移除

  3. insert():在指定位置插入一个或多个元素,可以用于向 vector 中插入新元素。

    前面push_back和pop_back()这俩函数都是在尾部进行操作而insert是在任意位置,

  4. erase():删除指定位置或区间内的元素,可以用于从 vector 中移除元素。
    这个erase()不用看我就知道这个是在任意位置删除元素

  5. clear():清空 vector 中所有的元素,可以用于释放动态数组的内存。

    释放内存就是vector是个容器要占用一定内存,用clear就可以释放一定内存,可以增加运行效率

  6. size():返回 vector 中元素的个数,可以用于获取 vector 中元素的长度。

    size()名字就是长度,那么就是检查vector里面的长度

  7. capacity():返回此时 vector 内部分配的存储空间,可以用于获取 vector 的容量(Capacity)。
    很少用?返回占用多少内存

  8. reserve():预留指定数量的存储空间,可以用于优化 vector 内存管理性能。
    对于已经确定要多少内存先把其预留可以增加速度

  9. operator[]:使用类似数组下标的方式访问 vector 中的元素。
    保留数组样式

  10. at():安全的访问 vector 中的元素,会进行越界检查。

  11. front():返回 vector 中的第一个元素。

  12. back():返回 vector 中的最后一个元素。

  13. begin():返回指向 vector 的第一个元素的迭代器(Iterator)。

  14. end():返回指向 vector 结尾的迭代器,指向的是最后一个元素的下一个位置。

上述方法只是 vector 中的一部分,还有其它很多方法可以用于访问和操作 vector 的元素。可以通过查看 C++ STL 官方文档或者使用 IDE 提供的自动补全功能来了解更多相关方法的用法和细节。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐