ホームページ  >  記事  >  バックエンド開発  >  同じベクトルから要素をプッシュするときに安全性を確保するにはどうすればよいですか?

同じベクトルから要素をプッシュするときに安全性を確保するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-26 11:17:30570ブラウズ

How to Ensure Safety When Pushing Elements from the Same Vector?

同じベクトルから要素をプッシュする: 安全対策

同じベクトルから要素をプッシュバックする安全性は、再割り当ての可能性にかかっています。 、既存のベクトル要素への参照が無効になる可能性があります。この問題は、次の例で発生します。

<code class="cpp">vector<int> v;
v.push_back(1);
v.push_back(v[0]);</code>

2 番目の Push_back が再割り当てをトリガーすると、v[0] への参照が無効になります。これに対処するには、次のアプローチを使用できます。

<code class="cpp">vector<int> v;
v.push_back(1);
v.reserve(v.size() + 1);
v.push_back(v[0]);</code>

reserve を呼び出すことで、明示的に十分なメモリを要求し、後続の挿入中に再割り当てが発生しないようにします。

C 標準によると要素参照に関する Push_back の動作は、無効な参照を引き起こす可能性があるにもかかわらず、明示的に欠陥として定義されていません。これは、標準では、挿入によって他の要素の位置が変更された場合でも、vector::insert が正しく機能することが要求されているためです。

以上が同じベクトルから要素をプッシュするときに安全性を確保するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。