我想在C ++中创建一个行向量,其中包含0到N的整数元素(我在C ++程序中指定的整数变量)。我已经看过Armadillo C ++库并尝试使用它的span
函数,但它没有创建一个向量(而是创建一个类型为arma::span
的对象),所以写道:
vec n = span(0,N);
不会创建所需的矢量。如果它有帮助(就像我对我想要的解释不清楚)我知道在MATLAB中这会创建我想要的向量:
n=0:N;
我并不关心使用哪个库(如果有的话),前提是该库可用于大多数主要的Linux发行版(如我现在的Fedora 25)。
答案 0 :(得分:2)
你可以这样使用std::iota
。
#include <numeric>
#include <vector>
#include <iostream>
int main()
{
int N = 9;
std::vector<int> n(N + 1);
std::iota(begin(n), end(n), 0);
for(auto i: n)
{
std::cout << i << '\n';
}
}
Theres可能也是一种很酷的方式,可以在编译时使用std::integer_sequence
和一些元编程来完成它。
答案 1 :(得分:1)
您可以像这样使用std::iota函数:
std::vector<int> v(n + 1);
std::iota(v.begin(), v.end(), 0);
或者你可以把它包装成这样的函数:
inline std::vector<int> zero_to_n_vector(std::size_t n)
{
std::vector<int> v(n + 1);
std::iota(v.begin(), v.end(), 0);
return v;
}
auto v = zero_to_n_vector(20);