私はC ++にはかなり慣れていませんが、 std::string クラスでできるようにメモリを無意味に使用することはできないことを知っています。例えば:
std::string f = "asdf";
f += "fdsa";
文字列クラスは、大きくなったり小さくなったりするのをどのように処理しますか? デフォルトの量のメモリを割り当て、さらに必要な場合は、new
より大きなメモリ ブロックを割り当てて、そのメモリに自身をコピーすると仮定します。しかし、サイズ変更が必要になるたびに文字列全体をコピーしなければならないのは、かなり非効率的ではないでしょうか? 私はそれができる別の方法を本当に考えることはできません(しかし明らかに誰かがそうしました)。
さらに言えば、vector、queue、stack などのすべての stdlib クラスは、どのようにして成長と縮小をそれほど透過的に処理するのでしょうか?