たとえば、乱数generate_n
を作成するようなものを使用することは可能ですか?コンストラクターで割り当てconst vector
を導出して実行せずにそれを行う方法を考えることはできませんでした。vector
質問する
2883 次
3 に答える
26
必要に応じて、静的ヘルパーまたはラムダを使用してください。コメントで指摘されている移動セマンティクス/コピー省略は、すべてのまともなコンパイラがヘルパーによって返されたベクトルの完全なコピーを省略するため、これをかなり安価にします。代わりに、単一のベクトルを埋めるコードを作成し、そのベクトルを使用するだけです。
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() );
ここにラムダバージョンがあります:
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;
}() );
于 2013-03-05T09:33:23.793 に答える
0
初期化を関数にカプセル化し、それを「constexpr」と宣言して、それを使用して const 式を初期化できるようにします。
于 2013-03-06T12:26:30.710 に答える