разница между обычной «строкой» класс «rwcstring» учебный класс

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

4

Решение

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

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

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

2

Другие решения

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

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

0

По вопросам рекламы [email protected]