[解決済み] 同じベクトルから要素をpush_backするのは安全ですか?
2022-06-30 03:34:34
質問
vector<int> v;
v.push_back(1);
v.push_back(v[0]);
2回目のpush_backで再割り当てが発生すると、vector内の最初の整数への参照はもはや有効ではなくなります。では、これは安全ではないのでしょうか?
vector<int> v;
v.push_back(1);
v.reserve(v.size() + 1);
v.push_back(v[0]);
これで安全?
どのように解決するのですか?
以下のように表示されます。 http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-closed.html#526 はこの問題 (またはそれに非常に似たもの) を、規格の潜在的な欠陥として取り上げています。
1) const参照で取得したパラメータは、関数の実行中に変更することができる。 関数の実行中に変更できる
例を挙げます。
与えられたstd::vector v:
v.insert(v.begin(), v[2]);
v[2]は、ベクトルの要素を移動することで変更できます。
これは欠陥ではない、という解決案が出されました。
vector::insert(iter, value)が動作するよう要求されます。 は動作しないことを許可していないからです。
関連
-
[解決済み】C++エラー。アーキテクチャ x86_64 に対して未定義のシンボル
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み] [Solved] Error C1083: Cannot open include file: 'stdafx.h'
-
[解決済み】「Expected '(' for function-style cast or type construction」エラーの意味とは?
-
[解決済み] ベクトルが与えられた要素を含むかどうかをテストする
-
[解決済み] CSS Flexboxで、"justify-items "と "justify-self "プロパティはなぜないのですか?
-
[解決済み] なぜJavaのVector(およびStack)クラスは時代遅れ、または非推奨とされているのですか?
-
[解決済み] std::vectorをハードコードされた要素で初期化する最も簡単な方法は何ですか?
-
[解決済み] std::vector<> からインデックスで要素を消すにはどうしたらいいですか?
-
[解決済み】std::vectorはpush_backでオブジェクトをコピーしているのか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++ - 解放されるポインタが割り当てられていないエラー
-
[解決済み] [Solved] Error C1083: Cannot open include file: 'stdafx.h'
-
[解決済み] string does not name a type Errorが発生するのはなぜですか?
-
[解決済み】'cout'は型名ではない
-
[解決済み】浮動小数点例外エラーが発生する: 8
-
[解決済み】「Expected '(' for function-style cast or type construction」エラーの意味とは?
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み】エラー:不完全な型へのメンバーアクセス:前方宣言の
-
[解決済み】警告 - 符号付き整数式と符号なし整数式の比較
-
[解決済み】Eclipse IDEでC++エラー「nullptrはこのスコープで宣言されていません」が発生する件