generate_n
のようなものを使用して、例えば乱数のconst vector
を作成できますか?私はvector
を導出せずにコンストラクタで代入を行うことなく、それを行う方法を考えることができませんでした。C++ 11を使用して関数結果のconstベクトルをどのように初期化しますか?
17
A
答えて
26
必要に応じてスタティックヘルパーまたはラムダを使用します。 move semantics/elionをコメント内で指摘しておくと、ヘルパーが返すベクタの完全なコピーをすべて省略してコンパイルするので、かなり安いでしょう。代わりに、単一のベクトルを塗りつぶしてそのコードを使用するコードを作成します。ここ
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;
}());
0
は機能にあなたの初期化をカプセル化し、constの式を初期化するためにそれを使用できるように、「constexprの」それを宣言します。
+3
ここで 'constexpr'は必要ありません。なぜなら、彼はコンパイル時定数式(' std :: vector'リターンは決してできない)を必要としないからです。 –
0
あなたはstd::transform
を使用することができますだけでなくfuncがある
vector<int> vec(10,1);
transform(vec.begin(), vec.end(), vec.begin(), func);
:私はあなたが今、このための答えを持って知っている
int func(int i)
{
//return a random generated number
}
関連する問題
- 1. C++ 11関数呼び出しでのベクトルの初期化
- 2. C++ 11関数ローカル静的constオブジェクトのスレッドセーフ初期化
- 3. 関数呼び出し結果を使用して、C++ 03で複数のメンバーを初期化しますか?
- 4. C++ 11メンバ関数をコンパイルしてスレッドを初期化する
- 5. はゼロにベクトルを初期化するC++/C++ 11
- 6. C++ 11で同じ値のベクタのベクトルをどのように初期化できますか?
- 7. C++ - ベクトルの初期化私が多次元ベクトルを初期化しようとしてる
- 8. C++ 11で多次元std :: arrayを(イニシャライザのリストを通して)どのように初期化しますか?
- 9. C++ <11:静的constクラスメンバを初期化する
- 10. C++ 11値初期化前に集約し、初期化する
- 11. const変数を使用した配列の初期化
- 12. std :: mapの初期化にC++ 11のconstexprを使用する
- 13. C++ 11は初期化されたメンバフィールドを再初期化しますか?
- 14. メンバー関数を使用して初期化リストのメンバー変数を初期化できますか?
- 15. スタティックメンバ関数を使用して、C++で非constスタティックメンバ変数を初期化する
- 16. C#:どのようにしてオブジェクトを初期化しないのですか?
- 17. C++ 11クラス初期化エラー
- 18. 2Dベクトルを初期化して使用できません
- 19. const intの値を渡して配列を初期化する関数
- 20. C++ 11の値の初期化子とリストの初期化子
- 21. 関数を使用して配列を初期化するにはどうすればよいですか?
- 22. テンプレート引数を使用して静的constメンバーを初期化する
- 23. 配列を初期化する際にconst staticメンバを使用しようとしていません
- 24. findを使用して定数を初期化しますか?
- 25. コンストラクタを使用して、2DベクトルをC++のワンライナーとして初期化できますか?
- 26. C++のベクトル初期化:この構文を使用して実際に何が行われていますか?
- 27. Segfault 11でベクトルとfstreamを使用していますか? C++
- 28. init_segを使用して初期化関数を呼び出す
- 29. コンパイル時に静的const std :: mapを初期化しますか?
- 30. 静的初期化時にフリーの "char const *"を使用する
が、ちょうどFYI 'で' vector'(または他のタイプの導出std'名前空間は特に誘導されることを意図していません)は危険です(http://stackoverflow.com/questions/2034916/is-it-okay-to-inherit-implementation-from-stl-containers-rather-than-delegate ) – boycy