c++ - 如何用两点和步骤c++之间的元素初始化 vector

标签 c++ boost vector typedef

我将初始化一个 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/

相关文章:

c++计时器稍后调用函数/方法?

C++读取固定数量的整数行,每行中的整数数量未知

C++:组合私有(private)全局变量和模板

c++ - 为什么在 Boost Turtle 中使用 MOCK_NON_CONST_METHOD_EXT 作为算子 float() ?

c++ - Boost日志宏解释

c++ - 为什么在 std::vector 删除中需要 begin()?

c++ - 简单 boost 序列化中的未定义引用错误

c++ - vector 持有只读矩阵?

用于矢量 PDF 的 Azure 读取 API

boost - 保持 io_service 存活