在 c++ 中创建 {1, 2, 3,.., 100} 数组的最有效方法是什么?

What is the most efficient way to create array of {1, 2, 3, 4,..., 100} in c++

本文关键字:数组 有效 是什么 方法 创建 c++      更新时间:2023-10-16

以正常方式,我将使用:

int A[100];
for (int i = 0; i < 100; i++){
A[i] = i+1;
}

但是还有其他方法可以提高效率(运行时间)吗?

在C++中,从这些问题开始的最有效(我选择的效率衡量标准是开发人员生产和维护的努力)方法是尝试找到一种标准算法来适应要求。 在这种情况下,std::iota()合适的算法(自 C++11 以来在标准标头<numeric>中)。

std::vector<int> A(100);
std::iota(A.begin(), A.end(), 1);    // alternative: std::iota(std::begin(A), std::end(A), 1);

或者(如果您坚持使用数组)

int A[100]
std::iota(std::begin(A), std::end(A), 1);

在 C++11 之前,将std::generate()与适当的函子一起使用将起作用。 正如interjay在评论中指出的那样,就开发人员的努力而言,这可能不是最有效的(比如说,一个简单的循环)。 但是,一旦习惯了使用标准库中的工具的概念,构建适当的函子(具有合适的构造函数、数据成员和operator()struct类型)可能会成为第二天性。

在 C 语言中,一个简单的循环可能没问题,至少在第一个实例中是这样(即,除非你有特定的测量值提供证据证明"效率低下",但是,你定义它是过度的)。