使用 C++ STL 的数组实现

array implementation using c++ STL

本文关键字:数组 实现 STL C++ 使用      更新时间:2023-10-16

我试过这两个无法理解的区别

vector<int >a(n) and vector<int >a[n]

请有人解释,谢谢

对你的问题的简单回答是:

  • vector<int >a(n)是单个vector<int>对象,初始大小为n个元素。

  • vector<int >a[n]是一个固定的nvector 对象的数组,每个对象的初始大小为 0。

你的问题根本没有给出上下文,所以很难给出答案。

首先,向量和数组之间存在差异。数组是相同类型元素的固定大小容器,向量是相同类型元素的可调整大小容器。对于数组,您不需要 STL(尽管 STL 中有数组实现(。

这些是您的选择:

#define ARRAY_SIZE 10
int my_plain_arr[ARRAY_SIZE]; // can never store more than 10 elements
std::vector<int> my_vector(ARRAY_SIZE); // 10 is the initial size, can grow
std::array<int, ARRAY_SIZE> my_stl_array; // can never store more than 10 elements

你的小代码示例显示的实际上是一个向量数组。

我不能称自己为经验丰富的 c++ 用户,但我希望我的答案会有所帮助。主要有3种创建一维数组的方法

矢量矢量名称(或(矢量
  1. 矢量名称(元素数,起始值(
  2. 类型 数组名称[大小]
  3. 类型* 数组名称

如果你使用第一种方式,你可以做一些好事,比如"vectorName.push_back(element(",所以它是一个动态数组。基本上,您无需决定所需的尺寸元素

如果使用第二种方式创建数组,但在使用数组之前必须确定数组的最大大小。

如果使用第三种方式,则正在创建一个指向数组第一个元素的指针,并且可以使用new关键字在堆上分配空间,但您还需要决定它将占用多少空间。