std::vector: prefer assign or std::copy のコピー?
2023-11-13 03:57:46
質問
2つのベクトルがあります。
std::vector<int> v1, v2;
// Filling v1
...
そして、今度は
v1
を
v2
. を好む理由はあるのでしょうか?
v2 = v1;
へ
std::copy (v1.begin(), v1.end(), v2.begin());
(またはその逆)ですか?
どのように解決するのですか?
一般に、私は強く
v2 = v1
:
- より短く、より明確に意図を伝えることができる
-
std::copy
が動作しない場合v2
と同じ長さでない場合v1
(と同じ長さでなければなりません (リサイズされないので、古い要素の一部を保持することになります)。v2.size() > v1.size()
で、プログラムの他の場所で使用されているいくつかのランダムなデータを上書きします。 最悪の場合 -
もし
v1
が期限切れになりそうな場合(そしてC++11を使用している場合)、それを簡単に修正することができます。move
という内容に変更できます。 -
パフォーマンス的には、割り当てが
std::copy
というのは、実装者はおそらくstd::copy
を内部的に使用するでしょうから。
結論として
std::copy
は表現力が乏しく、間違ったことをする可能性があり、さらに速くもありません。ですから、ここでそれを使う理由は本当にありません。
関連
-
[解決済み】非静的メンバ関数への参照を呼び出す必要がある
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み] scpを使ってリモートからローカルにフォルダをコピーするにはどうしたらいいですか?
-
[解決済み] 割り当て後にリストが予期せず変更されました。その理由と防止策を教えてください。
-
[解決済み] コピーアンドスワップ慣用句とは?
-
[解決済み] std::stringをintに変換するにはどうしたらいいですか?
-
[解決済み] std::vector<> からインデックスで要素を消すにはどうしたらいいですか?
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み】なぜC++プログラマは'new'の使用を最小限に抑えなければならないのでしょうか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】coutはstdのメンバではない
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】識別子 "string "は未定義?
-
[解決済み】致命的なエラー LNK1169: ゲームプログラミングで1つ以上の多重定義されたシンボルが発見された
-
[解決済み】関数名の前に期待されるイニシャライザー
-
[解決済み】エラー。switchステートメントでcaseラベルにジャンプする
-
[解決済み] 式はクラス型を持つ必要があります。
-
[解決済み】エラー:free(): 次のサイズが無効です(fast)。
-
[解決済み] ベクターのコピーは、予約してコピーするのと、作成してスワップするのと、どちらが効率的でしょうか?[重複しています]。