是否有可能使用类似generate_n
的东西创建一个const向量
,例如随机数?我想不出在不派生 vector
并在构造函数中执行赋值的方法。
是否有可能使用类似generate_n
的东西创建一个const向量
,例如随机数?我想不出在不派生 vector
并在构造函数中执行赋值的方法。
std::vector< int > Helper()
{
const size_t n = 10;
std::vector< int > x( n );
std::generate_n( x.begin(), n, someGenerator );
return x;
}
const std::vector< int > my_const_vec( Helper() );
这是lambda版本:
const std::vector< int > my_const_vec( [] ()
{
const size_t n = 10;
std::vector< int > x( n );
std::generate_n( x.begin(), n, someGenerator );
return x;
}() );
-> std::vector<int>
,我想。 - Christian Rauconstexpr
,因为他不需要一个编译时常量表达式(而std::vector
返回值永远也不可能是编译时常量表达式)。 - Christian Rau你也可以使用 std::transform
vector<int> vec(10,1);
transform(vec.begin(), vec.end(), vec.begin(), func);
其中 func 为:
int func(int i)
{
//return a random generated number
}
const
向量,因为即使你的方法在被调用的函数中也创建了一个。 - Saksham
vector
(或者其他在std
命名空间中没有特别意图被派生的类型)派生是有风险的。参考链接 - boycy