この投稿では、C++でアレイをvectorに変換する方法について説明します。

1.範囲コンストラクターの使用

アイデアは、vectorのを使用することです 範囲コンストラクター これは、2つの入力イテレータによって定義された指定された範囲の要素からvectorを構築します。これは最も単純で非常に効率的なソリューションです。

ダウンロード  コードを実行する

出力:

1 2 3 4 5

 
上記のプログラムは sizeof アレイのサイズを計算するための演算子。導入されたC++11ではそれを回避できます std::beginstd::end シーケンスの最初と最後を指すイテレータを返す関数。

ダウンロード  コードを実行する

出力:

1 2 3 4 5

2.使用する std::insert 関数

別の効率的な解決策は、 std::insert 関数。 std::vector のオーバーロードバージョンがあります std::insert、これは3つのパラメーターを取ります。最初のパラメーターは宛先vectorへのイテレーターであり、最後の2つのパラメーターはアレイ要素の範囲を指定するイテレーターです。

ダウンロード  コードを実行する

出力:

1 2 3 4 5

3.ナイーブソリューション

単純な解決策は、アレイを反復し、そのすべての値を一度に1つずつvectorに追加する単純なforループを使用することです push_back() 関数。

ダウンロード  コードを実行する

出力:

1 2 3 4 5

4.使用する std::copy 関数

使用することもできます std::copy STLアルゴリズム。指定された範囲の要素を、指定された出力イテレータから始まる別の範囲にコピーします。宛先vectorの最後に新しい要素を挿入する必要があるため、次を使用できます。 std::back_inserter 目的地の初期位置に。

ダウンロード  コードを実行する

出力:

1 2 3 4 5

 
vectorに十分なスペースがある場合は、出力イテレータを宛先範囲の先頭に指定するだけです。

ダウンロード  コードを実行する

出力:

1 2 3 4 5

5.使用する memcpy() 関数

vectorは動的アレイにすぎないため、 memcpy() 関数もここで機能します。データのバイナリコピーを実行するため、エラーが発生しやすくなります。のアレイで使用できます POD(プレーンオールドデータ)タイプ int、charなどのようですが、構造体やクラスではお勧めしません。

ダウンロード  コードを実行する

出力:

1 2 3 4 5

6.使用する std::assign 関数

使用することもできます std::assign vectorの既存の内容を指定された範囲の要素に置き換える関数。

ダウンロード  コードを実行する

出力:

1 2 3 4 5

これで、C++でアレイをvectorに変換できます。