неизменяемые строки против std :: string - PullRequest
61 голосов
/ 27 мая 2010

Я недавно читал о неизменяемых строках Почему строки не могут быть изменяемыми в Java и .NET? и Почему .NET String является неизменяемой? , а также некоторые вещи о почему D выбрал неизменные строки. Кажется, есть много преимуществ.

  • тривиально безопасен для потока
  • более безопасный
  • более эффективная память в большинстве случаев.
  • дешевые подстроки (токенизация и нарезка)

Не говоря уже о том, что большинство новых языков имеют неизменяемые строки, D2.0, Java, C #, Python и т. Д.

Получит ли C ++ выгоду от неизменяемых строк?

Возможно ли реализовать класс неизменяемой строки в c ++ (или c ++ 0x), который имел бы все эти преимущества?


Обновление:

Есть две попытки неизменных строк const_string и fix_str . Ни один не был обновлен в течение полувека. Они даже используются? Почему const_string никогда не превращается в boost?

Ответы [ 11 ]

0 голосов
/ 27 мая 2010

Qt также использует неизменяемые строки с копированием при записи.
Есть некоторые споры о том, сколько производительности он действительно покупает с приличными компиляторами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...