我熟悉矢量的数学/物理概念作为幅度和方向,但我也在编程的上下文中不断引用向量(例如C++似乎有一个stl :: vector库出现了经常在SO).
我从上下文中得到的直觉是,它们是一个相当原始的构造,最常用于表示可变长度数组的行(按照我认为的大小存储它的大小),但是如果有人可以的话,它会非常有用为我提供了更完整的解释,最好包括它们在实践中的使用方式和原因.
来自http://www.cplusplus.com/reference/stl/vector/
向量容器实现为动态数组; 就像常规数组一样,向量容器将其元素存储在连续的存储位置,这意味着它们的元素不仅可以使用迭代器访问,还可以使用常规指向元素的偏移量来访问.
但与常规数组不同,向量中的存储是自动处理的,允许根据需要进行扩展和收缩.
此外,矢量通常可以容纳任何对象 - 因此您可以创建一个类来保存有关车辆的信息,然后将该车队存储在矢量中.
除了调整大小之外,关于向量的好处是它们仍然允许通过索引在不变的时间内访问单个元素,就像数组一样.
调整大小的权衡是,当你达到当前容量时,它必须重新分配,有时复制到更多内存.然而,大多数容量增加算法每次碰到障碍时都会使容量增加一倍,所以你永远不会超过log2(堆可用),在整个程序运行的最坏情况下,这可能是十几次.
-亚当
在数学中,矢量可以被认为是方向和幅度的组合.但是,它也可以被认为是一个坐标.例如,幅度为5且与水平面成约37度角的矢量表示2D平面上的点.这一点也可以用笛卡尔坐标对(3,4)表示.该对(3,4)也是数学向量.
在编程中,这个名称"vector"最初用于描述任何固定长度的标量数字序列.长度为2的矢量表示2D平面中的点,长度为3的矢量表示3D空间中的点,依此类推.长度为100的向量表示100维空间中的一个点(数学家在考虑这些事情时没有任何困难).
在现代编程库中,这个名称"vector"通常意味着可变大小的值序列(不一定是数字).除非您正在进行某种投影操作,否则更改数学矢量的大小(长度或维数)并不是您通常会做的事情.但是改变包含字符串序列的编程向量的长度可能是一种常见的操作.
你习惯的数学向量是第一级的张量 ; 计算机科学中的数据结构不一定遵守张量转换规则.如前所述,它们只是可以扩展和收缩的阵列.