[解決済み] C++でループせずに配列の内容をstd::vectorにコピーするにはどうしたらいいですか?
2022-05-25 13:18:38
質問
プログラムの別の部分から関数に渡された値の配列があり、後で処理するために保存する必要があります。 データを処理するまでに私の関数が何回呼び出されるか分からないので、動的なストレージ構造が必要です。
std::vector
. への標準的なループを行う必要はありませんね。
push_back
のようなものを使ってすべての値をコピーできればいいのですが。
memcpy
.
どのように解決するのですか?
配列と配列サイズを取得した後にベクトルを構築できれば、そのまま言えるでしょう。
std::vector<ValueType> vec(a, a + n);
...と仮定すると
a
が配列で
n
は含まれる要素の数です。 それ以外の場合は
std::copy()
w/
resize()
でうまくいきます。
私なら
memcpy()
は使わないでください。
また、注目すべきは、これらのどれもが本当にforループを回避しているわけではないということです。 O(n) ランタイム パフォーマンスは、値をコピーするために避けられないものです。
最後に、C言語スタイルの配列は、ほとんどのSTLアルゴリズムにとって完全に有効なコンテナであることに注意してください。
begin()
と等価であり、(
ptr + n
) と同等です。
end()
.
関連
-
[解決済み】テンプレートの引数1が無効です(Code::Blocks Win Vista) - テンプレートは使いません。
-
[解決済み] ベクトルを配列に変換する方法
-
[解決済み] std::vector にある項目が存在するかどうかを調べるには?
-
[解決済み] std::vectorをハードコードされた要素で初期化する最も簡単な方法は何ですか?
-
[解決済み] std::vector<> からインデックスで要素を消すにはどうしたらいいですか?
-
[解決済み] C#でディレクトリの中身を丸ごとコピーする
-
[解決済み] C++におけるstd::vectorとstd::arrayの比較
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
-
[解決済み】メモリフラグメンテーションとは何ですか?
-
[解決済み】C言語配列からstd::vectorを初期化する方法とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン