我将初始化一个 vector ,其中的元素在两个数字之间以已知步长均匀缩放。类似于这个伪代码。
typedef vector<double> a(startnumber, step, endnumber);
例如
vector<double> a(1, 1, 10); // a = {1, 2, ...., 10};
有什么办法可以用 C++ 实现吗?
最佳答案
当然:
template <typename T>
std::vector<T> createRange(T start, T end, T step)
{
std::vector<T> result;
for (; start < end; start += step) {
result.push_back(start);
}
return result;
}
任何其他东西都更复杂,但实际上并没有更好(例如,带有 iota()
或 generate()
的东西)。这仅在 step
> 0 时有效。如果您希望它对负步有效,在这种情况下必须打开标志以检查 start > end
.
关于c++ - 如何用两点和步骤c++之间的元素初始化 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27241124/