ホームページ > バックエンド開発 > C++ > C スタイルの配列から `std::vector` を効率的に初期化する方法

C スタイルの配列から `std::vector` を効率的に初期化する方法

Patricia Arquette
リリース: 2024-11-09 14:22:02
オリジナル
471 人が閲覧しました

How to Efficiently Initialize a `std::vector` from a C-style Array?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート