如果有矢量,那么为什么会有数组

If there are Vectors, then why are there Arrays?

本文关键字:为什么 数组 如果      更新时间:2023-10-16

我一直在问自己这个问题。我试着在网上找到答案,但就是找不到我真正想要的东西。如果开发人员让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的实现不包含任何"魔法"——它只是为您自己可以做的事情提供了一个标准接口。同时,它确实提供了一个标准接口,通常不会带来任何开销,所以很少有理由自己完成这项工作。