【发布时间】:2017-03-05 18:26:59
【问题描述】:
在我看来,它们都有相同的功能,除了 std::vector 似乎更灵活,所以我什么时候需要使用数组,我可以只使用 std::vector 吗? 这不是一个新问题,原来的问题没有我想要的答案
【问题讨论】:
-
如果您需要一个“动态”数组,那么
std::vector是自然的解决方案。它通常应该是所有东西的默认容器。但是,如果您希望在编译时创建一个静态大小的数组(就像 C 样式的数组一样)但包装在一个不错的 C++ 对象中,那么std::array可能是更好的选择。 -
当您不需要
std::vector的灵活性时,使用数组(或std::array)是明智的。 -
动态内存,堆?
-
几乎没有理由在 C++ 中使用老式数组,除非您有非常严格的性能要求(尽管一个好的编译器应该能够生成可比较的代码),或者您正在与C API(尽管有
std::array和std::vector方法将返回指向底层 C 数组的指针)。