10

コピー オン ライトに関するウィキペディアの記事を読んでいて(それをサポートするファイルシステムがあるかどうか知りたいです)、次の一節に驚きました。

COW は、カーネルの外部、ライブラリ、アプリケーション、およびシステム コードでも使用されます。たとえば、C++ 標準ライブラリによって提供される文字列クラスは、コピー オン ライトの実装を許可するように特別に設計されています。

std::string x("Hello");

std::string y = x;  // x and y use the same buffer

y += ", World!";    // now y uses a different buffer
                    // x still uses the same old buffer

コピー オン ライトがすべて STL でサポートされていることを知りませんでした。本当?や など、他の STL クラスにも適用されますstd::vectorstd::array? その最適化をサポートしているコンパイラはどれですか (特に、G++、Intel C++ コンパイラ、および Microsoft C++ コンパイラについて知りたいです)。

4

2 に答える 2

2

gcc は、std::string に参照渡しのコピーを使用します。バージョン 4.8 の時点で、標準に違反しているにもかかわらず、C++11 に対してはまだそれを行っています。

ここを参照してください:

于 2015-08-15T18:34:57.340 に答える