【问题标题】:What is difference between vector<int>arr and int arr[]vector<int>arr 和 int arr[] 有什么区别
【发布时间】:2021-09-16 17:36:01
【问题描述】:

vector&lt;int&gt; arrint arr[] 有什么区别,除了数组有文件中的一些函数?

int arr[]vector&lt;int&gt; arrarray&lt;int, size&gt; are 之间存在一些差异,因为 int arr[]vector 与数组和其他数组不同,是动态大小的。

【问题讨论】:

  • 一个是向量,另一个是数组。它们不是一回事。
  • vector 与 C 无关。因此假设您询问的是 C++(它们是不同的语言),因此已为您删除了 C 标记。
  • int arr[] 是固定大小 - 它根据初始化的东西确定大小,之后您无法更改大小。 std::array&lt;int, size&gt; 也是固定大小,但在传递给函数时不会衰减为指针,因此您始终知道它的大小。 vector&lt;int&gt; 的大小不是固定的——它会随着添加内容自动变大,而且在传递给函数时它不会衰减为指针,因此您始终知道它的大小

标签: c++ arrays dynamic


【解决方案1】:

数组 是一种语言特性,从 C 继承到 C++ 语言。它具有固定大小,并且必须在编译时知道该大小。它将一堆值(或对象)按顺序存储在内存中。它提供了一些功能——您可以使用方括号运算符访问数组的元素。 (即int x = arr[4] 会给你第 4 个索引处的元素。)

std::vector 由标准模板库 (STL) 提供。它是一个容器,这意味着它是一个存储其他值和对象的对象。它在一个简单的数组上提供了许多额外的功能。最重要的是,它可以随着新对象的添加或删除而增长。如果向量的增长大于支持其存储的内存,则在内部它将重新分配内存并将存储的值移动到更大的内存中。

注意:可以通过迭代器访问向量和数组,这是循环遍历容器中所有元素的常用方法。

容器存在其他算法,允许进行各种操作、排序、查找等。

【讨论】:

  • 谨慎使用迭代器周围的内容。您也可以获得与“标准库”一起使用的标准 C 数组的迭代器。迭代器是允许您将容器与算法连接起来的粘合剂。
  • 注意:STL 这个词现在有点过时了。它们只是“标准库”的一部分。当我们在 2003 年左右进行标准化时,术语 STL 是“标准库”模板部分的原始术语,但它不再准确了。
  • 同意,虽然可能,但我认为这受到其实用性的限制。如果您必须拥有一个行为类似于 C 样式数组的容器,并且您需要迭代器访问。然后让std::array为你填补空白。
猜你喜欢
  • 2011-07-26
  • 1970-01-01
  • 2015-01-06
  • 2019-12-19
  • 2010-11-18
  • 2020-12-27
  • 1970-01-01
  • 2018-06-16
  • 2019-09-06
相关资源
最近更新 更多