C スタイルの配列から std::vector を効率的に割り当てる
配列から std::vector を初期化するタスクが発生したときC スタイルの配列では、効率と利便性の両方を考慮することが重要です。この状況は、次のクラス例に示すように、外部制約によってデータが C スタイルの配列形式で提供されるように指示されている場合に発生します。
class Foo { std::vector<double> w_; public: void set_data(double* w, int len){ // how to cheaply initialize the std::vector? }
std::vector を効率的に初期化するには、次の事実を利用できます。 C スタイルの配列ポインタもイテレータとして扱うことができます。これにより、中間コンテナの作成や個々の要素のループを回避できます。
エレガントで効率的なソリューション:
w_.assign(w, w + len);
ここで、w は最初の要素へのポインタです。 C スタイルの配列の要素であり、w len は配列の末尾を指します。 assign 関数を反復子とともに使用すると、配列要素からベクトル要素が自動的に構築されます。この方法は効率的であるだけでなく、簡潔でエレガントです。
以上がC スタイルの配列から `std::vector` を効率的に初期化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。