如果有矢量,那么为什么会有数组
If there are Vectors, then why are there Arrays?
我一直在问自己这个问题。我试着在网上找到答案,但就是找不到我真正想要的东西。如果开发人员让Vectors更容易使用(据一些人说),那么数组的用途是什么(也有一些人说,数组通常是避免使用的)?
存储在std::array
中的元素可以在堆栈上分配,因为在编译时大小是已知的,std::vector
的元素将在堆上分配。这可以带来巨大的性能差异。或者更一般地说,std::array
不需要自己的内存分配,但std::vector
总是需要。
在C++中,array
用于指代两种不同的事物。一个是std::array
。另一种是从这样的声明中获得的内置数组类型:int foo[10];
。这定义了一个由10个整数组成的数组,名为foo
。
反对使用数组的建议将(至少通常)引用内置的数组类型。我不知道有谁建议不要使用std::array
(除非有人需要不同的容器,如std::vector
)。
建议在内置数组类型上使用std::array
非常容易,因为与内置数组类型相比,std::array
的设计不会带来任何开销。然而,除此之外,std::array
还提供了一个普通的容器接口,用于获取数组的第一个元素、数组的大小或迭代器的开头和结尾,因此很容易将标准算法应用于std::array
。
当然,所有这些也可以用内置的数组类型来完成。std::array
的实现不包含任何"魔法"——它只是为您自己可以做的事情提供了一个标准接口。同时,它确实提供了一个标准接口,通常不会带来任何开销,所以很少有理由自己完成这项工作。
相关文章:
- C++,为什么数组比矢量更快,使用更少的内存
- 为什么数组大小信息可用于"sizeof"运算符和 delete[] 运算符,但在将数组作为参数传递到
- 为什么数组变量正在更新
- 为什么数组不打印第一个元素?
- 为什么数组到指针的输出不相关
- 为什么数组中对象的析构函数在被另一个对象替换时不被调用?
- 为什么数组的 GCC 聚合初始化首先用零填充整个事物,包括非零元素?
- C++ 为什么数组没有长度属性
- 尝试使用 Array 类的模板构造整数数组时,错误:为什么数组类型"int [5]"不可分配,
- 为什么数组中需要常量大小
- c ,为什么数组元素自行更改
- 为什么数组元素必须具有相同的类型
- 为什么数组(字符串类型)的大小是 24 字节,带有单个空格元素
- 为什么数组从 0 而不是 1 开始?(C,C++)
- 为什么数组与 std::extent 第二个 imp 匹配
- 为什么数组在一个文件中打印,但在发送到另一个文件时却缺少数字
- 为什么数组变量可能无法初始化
- 当分配运算符的操作数左操作数时,为什么数组名称不腐烂到指针
- 为什么数组比向量快得多
- 为什么数组不填充?