Может кто-нибудь, пожалуйста, дайте мне знать точную разницу между обычными string
класс и рогатая волна rwcstring
учебный класс. Коды в моем проекте широко используют rwcstring
учебный класс. Я сомневаюсь, что если оба будут обрабатывать и манипулировать строками, то в чем разница между ними. Также, почему класс rwcstring считается более эффективным, чем обычный string
учебный класс ?
RogueWave-х RWCString
использует технику, известную как ленивое копирование улучшить его производительность. По сути, это означает, что копирование строки (будь то через конструктор копирования или оператор присваивания) на самом деле не копирует содержимое строки, а просто сохраняет указатель на содержимое исходной строки. Копирование выполняется только тогда, когда это действительно необходимо (обычно потому, что содержимое строки собирается измениться). Поскольку обычно строки никогда не модифицируются, это обеспечивает ощутимое улучшение производительности.
std::string
реализации явно не запрещено использовать эту технику. Фактически, некоторые положения в стандарте были сделаны с учетом этой возможной оптимизации. Проблема в том, что есть несколько способов победить этот механизм, например, взять указатель на содержимое строки и изменить его напрямую, без использования механизмов классов. Это причина, почему это необычно для std::string
использовать ленивое копирование.
Итак, в общем, вы можете сказать, что RWCString
является более эффективным, но и менее безопасным, чем обычные реализации std::string
,
Посмотрите на эту документацию:
http://www.roguewave.com/portals/0/products/legacy-hpp/docs/tlsref/rwcstring.html