これは本当に私自身の興味のための質問であり、ドキュメントでは判断できませんでした。
http://www.cplusplus.com/reference/string/string/で、追加が複雑であることがわかります。
「特定されていませんが、通常、新しい文字列の長さは直線的です。」
push_back() には複雑さがあります。
「特定されていません。一般的に償却定数ですが、新しい文字列の長さは最大で線形です。」
おもちゃの例として、「foo」という文字を文字列に追加したいとします。だろう
myString.push_back('f');
myString.push_back('o');
myString.push_back('o');
と
myString.append("foo");
まったく同じことになるの?それとも違いはありますか?push_back は呼び出しごとにメモリを確保する必要があるかもしれませんが、コンパイラは文字列を指定された文字数に拡張するために必要なメモリ量を知っているため、append がより効率的であると考えるかもしれません。