Разница между обычным классом "string" и классом "rwcstring"

Может кто-нибудь, пожалуйста, дайте мне знать точную разницу между обычными string класс и рогатая волна rwcstring учебный класс. Коды в моем проекте широко используют rwcstring учебный класс. Я сомневаюсь, что если оба будут обрабатывать и манипулировать строками, то в чем разница между ними. Также, почему класс rwcstring считается более эффективным, чем обычный string учебный класс?

2 ответа

Решение

RogueWave-х RWCString использует технику, известную как ленивое копирование, чтобы улучшить свою производительность. По сути, это означает, что копирование строки (будь то через конструктор копирования или оператор назначения копирования) на самом деле не копирует содержимое строки, а просто сохраняет указатель на содержимое исходной строки. Копирование выполняется только тогда, когда это действительно необходимо (обычно потому, что содержимое строки собирается измениться). Поскольку обычно строки никогда не модифицируются, это обеспечивает ощутимое улучшение производительности.

std::string реализации явно не запрещено использовать эту технику. Фактически, некоторые положения в стандарте были сделаны с учетом этой возможной оптимизации. Проблема в том, что есть несколько способов победить этот механизм, например, взять указатель на содержимое строки и изменить его напрямую, без использования механизмов классов. Это причина, почему это необычно для std::string использовать ленивое копирование.

Итак, в общем, вы можете сказать, что RWCString является более эффективным, но и менее безопасным, чем обычные реализации std::string,

Посмотрите на эту документацию:

http://www.roguewave.com/portals/0/products/legacy-hpp/docs/tlsref/rwcstring.html

Другие вопросы по тегам