gpt4 book ai didi

c++ - 用 std::array 替换固定大小的数组?

转载 作者:IT老高 更新时间:2023-10-28 21:46:23 28 4
gpt4 key购买 nike

使用遗留代码时,我问自己是否应该用新的 std::array 替换固定大小的 C 样式数组?比如

static const int TABLE_SIZE = 64;
double table[TABLE_SIZE];

替换为

std::array<double, TABLE_SIZE> table;

虽然我看到将 std::vector 用于可变大小数组的好处,但我看不到它们具有固定大小。 table.size() 无论如何都是已知的,std::begin(), std::end() 作为自由函数可用于具有 C 风格的 STL 算法数组也是。所以除了更符合标准之外,我是否错过了更多好处?是否值得进行替换所有匹配项的工作,还是认为这是最佳做法?

最佳答案

AFAIK std::array 只是提供了一个更好的类似 STL 的接口(interface)来处理而不是普通的 C 数组。就性能和功能而言,这两种选择归结为几乎相同,但 std::array 可以用作标准容器。

另一个特点:它们可能被视为 tuples因为它们提供了类似元组的访问功能。

最后但并非最不重要的一点是 user2079303 注意到:如果您的代码将被新手程序员使用,它可以在将其作为参数传递时防止数组衰减过程。

如果您想知道是否应该只用 std::arrays 替换所有 C 样式数组,如果您打算利用一些新可用的功能和/或重写一些代码,答案是肯定的以利用这些能力。如果您只是简单地用 std::arrays 替换 C 数组(不涉及任何其他内容),那可能不值得。

关于c++ - 用 std::array 替换固定大小的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22571052/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com