ユーザーとして、私はstd :: stringのsize()/ resize()/ reserve()を使って、これらの文字列のすべてのメモリを知り、管理しています。いつstd :: string :: capacity()を呼び出す必要がありますか?
ただし、いつ容量()を使用する必要がありますか?何かを達成するために何かをするためにこの関数を呼び出す必要があるのか、それとも必要なのでしょうか?
ありがとうございます!
ユーザーとして、私はstd :: stringのsize()/ resize()/ reserve()を使って、これらの文字列のすべてのメモリを知り、管理しています。いつstd :: string :: capacity()を呼び出す必要がありますか?
ただし、いつ容量()を使用する必要がありますか?何かを達成するために何かをするためにこの関数を呼び出す必要があるのか、それとも必要なのでしょうか?
ありがとうございます!
これは良い質問です。私はユーザコードでcapacity()
の呼び出しがコードのにおいであると言って火炎戦争の危険を冒すつもりです。
それを呼び出す唯一の理由は、メモリ割り当ての途中での操作を避けるためです。その場合、よりクリーンでフォールトトレラントな戦略は、独自のクラスを作成することです(たとえばlimited_length_string
)。可能な実装は、それ自身の実装を介して、またはstd::string
をカプセル化し、その上にreserve()
を呼び出すことによって、どちらか(アップフロント十分なメモリを割り当てることがあります。
を使用すると、コード内でこの呼び出しが表示された場合、あなたが取り組んでいる、そして地雷には注意してください。あなたの場合この電話を書くと、あなたのデザインが疑わしいという信号です。
何らかの理由でメモリを割り当てたくない場合は、たとえば、リアルタイムアプリケーションの非常に重要なセクションです。
容量は、現在の文字列がサイズを増やさずに格納できる最大文字数を示します。文字列のサイズを大きくしてメモリを増やしたくない場合に使用します。