【问题标题】:array implementation using c++ STL [closed]使用c ++ STL的数组实现[关闭]
【发布时间】:2018-10-30 04:39:30
【问题描述】:

这两种我都试过了,看不出区别

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

请有人解释一下。谢谢

【问题讨论】:

  • 你想做什么?
  • 使用STL实现整数数组
  • 对于固定大小的数组,试试const size_t ARRAY_SIZE = 42; int a[ARRAY_SIZE];
  • @ThomasMatthews 在 C++11 及更高版本中,建议使用 std::array 代替:std::array&lt;int, ARRAY_SIZE&gt; a;

标签: c++ stl


【解决方案1】:

您的问题的简单答案是:

  • vector&lt;int &gt;a(n) 是单个 vector&lt;int&gt; 对象,初始大小为 n 元素。

  • vector&lt;int &gt;a[n]n 向量对象的固定数组,每个对象的初始大小为 0。

【讨论】:

  • vector&lt;int &gt;a{n} 是一个向量,其值为 n... 仅对整数 T 和 n 为真。
【解决方案2】:

您的问题根本没有给出任何上下文,因此很难制定答案。

首先,向量和数组是有区别的。数组是相同类型元素的固定大小容器,向量是相同类型元素的可调整大小容器。对于数组,您不需要 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

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

【讨论】:

    【解决方案3】:

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

    1. 向量vectorName(或)向量vectorName(numberOfElements,StartingValue)
    2. 输入数组名[大小]
    3. 类型* ArrayName

    如果你使用第一种方式,你可以做一些不错的事情,比如“vectorName.push_back(element)”,所以它是一个动态数组。基本上你不用'不需要决定你需要的元素的大小。

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

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

    【讨论】:

      猜你喜欢
      • 2014-10-18
      • 2016-07-05
      • 1970-01-01
      • 2016-04-01
      • 1970-01-01
      • 2014-08-26
      • 2013-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多