Computer science 什么是向量,它们在编程中是如何使用的? 我熟悉向量的数学/物理概念作为一个大小和一个方向,但我也不断地在编程的上下文中引用向量(例如C++似乎有一个STL::向量库,它经常出现在这样的情况下)。

Computer science 什么是向量,它们在编程中是如何使用的? 我熟悉向量的数学/物理概念作为一个大小和一个方向,但我也不断地在编程的上下文中引用向量(例如C++似乎有一个STL::向量库,它经常出现在这样的情况下)。,computer-science,vector,Computer Science,Vector,从上下文中我的直觉是,它们是一个相当原始的构造,最常用来表示可变长度数组中的某个元素(我想它的大小存储为大小),但如果有人能给我提供一个更完整的解释,那将非常有帮助,最好包括在实践中使用它们的方式和原因。来自 向量容器实现为 动态阵列;一如往常 数组、向量容器都有自己的 存储在连续存储器中的元素 位置,这意味着 元素不仅可以访问 使用迭代器,但也使用偏移量 在指向元素的常规指针上 但与常规阵列不同,存储在 向量是自动处理的, 允许它被扩展和扩展 根据需要签订合同 此外,向量通常可以保存任何对象,

从上下文中我的直觉是,它们是一个相当原始的构造,最常用来表示可变长度数组中的某个元素(我想它的大小存储为大小),但如果有人能给我提供一个更完整的解释,那将非常有帮助,最好包括在实践中使用它们的方式和原因。

来自


向量容器实现为 动态阵列;一如往常 数组、向量容器都有自己的 存储在连续存储器中的元素 位置,这意味着 元素不仅可以访问 使用迭代器,但也使用偏移量 在指向元素的常规指针上

但与常规阵列不同,存储在 向量是自动处理的, 允许它被扩展和扩展 根据需要签订合同

此外,向量通常可以保存任何对象,因此您可以创建一个类来保存有关车辆的信息,然后将车队存储在向量中

除了调整大小之外,向量的优点在于它们仍然允许通过索引以恒定的时间访问单个元素,就像数组一样

调整大小的折衷办法是,当达到当前容量时,它必须重新分配,有时还要复制到更多内存。然而,大多数容量增加算法在每次遇到障碍时都会将容量增加一倍,因此,在整个程序操作过程中,遇到障碍的次数永远不会超过log2(可用堆),而在最坏的情况下,log2可能是log2的十几倍


-Adam

向量容器被实现为动态数组;与常规数组一样,向量容器的元素存储在连续的存储位置,这意味着它们的元素不仅可以使用迭代器访问,还可以使用指向元素的常规指针上的偏移量访问

但与常规阵列不同,向量中的存储是自动处理的,允许根据需要进行扩展和收缩

向量机擅长:

  • 通过位置索引(恒定时间)访问单个元素
  • 以任意顺序(线性时间)迭代元素
  • 从末尾添加和删除元素(固定摊销时间)

由于至少有两个其他答案是从中粘贴的,因此您可能还需要阅读其中的其余描述…:-)

您使用的数学向量是:;计算机科学中的数据结构不一定遵循张量变换规则。正如前面提到的那样,它们只是可以扩展和收缩的数组。

我可以从名称中理解您的混淆(我过去也对此感到混淆)。在3D图形编程中,向量的概念并没有帮助,它更接近数学定义。在数学中,向量可以看作是任意长度的一维矩阵(长度是坐标系的维数)。在大多数OO语言中,向量本质上是一维矩阵(数组),因此得名。它们与坐标没有任何关系,除非程序员决定将它们用于该任务(这很少见——我从未见过)。它们通常也没有任何数学运算符来进行矩阵乘法或任何类似的运算。所以它们的一维性质是关于相似性的终点。我将留给其他答案来解释OO容器的特性和用途,他们已经掌握了OO容器。

在数学中,向量可以被认为是方向和大小的组合。然而,它也可以被认为是一个坐标。例如,大小为5且与水平面成约37度角的向量表示二维平面上的点。该点也可以用笛卡尔坐标对(3,4)表示。这对(3,4)也是一个数学向量

在编程中,这个名称“vector”最初用于描述任何固定长度的标量数序列。长度为2的向量表示二维平面中的点,长度为3的向量表示三维空间中的点,依此类推。长度为100的向量表示100维空间中的一个点(数学家在思考这类问题时没有问题)

在现代编程库中,这个名称“vector”通常意味着可变大小的值序列(不一定是数字)。改变数学向量的大小(长度或维度)不是你通常会做的事情,除非你在做某种投影操作。但是更改包含字符串序列的编程向量的长度可能是一种常见操作。

来自:

为了给计算机内存建模,我们使用了一种称为向量的新数据结构。抽象地说,向量是一个复合数据对象,它的各个元素可以在独立于索引的时间内通过整数索引进行访问

有很多你需要了解的信息围绕着这个问题。它将向量与链表、数组等进行对比

另外,来自Stroustrup之旅(),第9章:

大多数计算都涉及到创建值集合…。一个主要用于保存对象的类被称为容器…最有用的
stl
容器是
vector
。stl::vector是给定类型的元素序列。这些元素连续存储在内存中

因此,STL向量是相同类型的值的集合,就像向量/模块的数学意义一样?