在 c++ 中创建 {1, 2, 3,.., 100} 数组的最有效方法是什么?
What is the most efficient way to create array of {1, 2, 3, 4,..., 100} in c++
以正常方式,我将使用:
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 语言中,一个简单的循环可能没问题,至少在第一个实例中是这样(即,除非你有特定的测量值提供证据证明"效率低下",但是,你定义它是过度的)。
相关文章:
- 使用无符号字符数组有效存储内存
- 有效地计算多维数组的累积和?
- 计算数组重复次数的组合的有效算法,加起来达到给定的总和
- C++ 返回指向函数内定义的静态数组的指针是否有效?
- 声明后,gcc 的动态大小数组是否与标准数组有效相同?
- 如何有效地找到数组中三元组和的最小差异?
- 如何在C++中有效地将数字值重新分配给字符数组
- 如何有效地收集给定数组中的重复元素?
- 创建字符串数组的有效方法
- 如何在C++中有效地将数组移动到向量
- 在递归函数中更有效地创建对象和对象数组?C++
- 张量(多维数组)是树前瞻数据的有效存储类型吗?
- 有效地展平结构数组
- cpp 数组 - 分配常量索引有效,而非常量索引不起作用
- 如何在整数数组中有效地存储大量数字?C++
- 有效地从文本文件中读取带有字符串索引的大型二维数组(矩阵)
- 如何有效地使用 std::async 对指针数组执行操作
- 数组有效,而矢量无效。我做错了什么?
- 为什么包含字符串文字的初始化器对初始化“char”数组有效
- 是return*数组;有效的