我一直向自己问这个问题。我试图在互联网上找到答案,但是,我只是找不到真正想要的东西。如果开发人员使Vectors可以更容易地使用(据某些人说),那么Arrays的用途是什么(某些人也普遍避免使用Arrays)?
答案 0 :(得分:4)
存储在std::array
中的元素可以在堆栈上分配,因为在编译时已知大小,而std::vector
的元素将在堆上分配。这会产生巨大的性能差异。或更笼统地说,std::array
不需要自己的内存分配,但是std::vector
总是需要。
答案 1 :(得分:1)
在C ++中,array
用于指两种不同的事物。一个是std::array
。另一个是从这样的声明int foo[10];
中获得的内置数组类型。这定义了一个由10个整数组成的数组,名为foo
。
关于使用数组的建议(至少通常)是指内置数组类型。我不知道有人建议不要使用std::array
(除非有人需要使用其他容器,例如std::vector
)。
建议对内置数组类型使用std::array
很简单,因为std::array
的设计与内置数组类型相比没有任何开销。但是,此外,std::array
提供了普通的容器接口,用于获取数组的第一个元素,数组的大小或迭代器的开头和结尾之类的内容,因此可以轻松地将标准算法应用于{ {1}}。
当然,所有这些 都可以使用内置数组类型完成。 std::array
的实现不包含任何“魔术”,它只是为您可以自行执行的操作提供了标准接口。同时,它确实提供了标准接口,并且通常不会增加任何开销,因此很少有理由自己完成这项工作。