Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 480
Завершенные тесты: 1
#1

Как устроен std::string - C++

19.07.2013, 22:03. Просмотров 830. Ответов 6
Метки нет (Все метки)

Добрый день! Недавно я задался таким вопросом - есть класс std::string, который подразумевает вставку\удаление символов и подстрок, а так же других операция. И в основе лежит какая-то структура данных. Только я не могу понять, что это за структура. Может это что-то вроде вектора, но по идеи все перечисленные операции (вставки, замены) будут происходить очень медленно. На список тоже не похоже - слишком много памяти для 1 символа + медленный случайный доступ.
Как всё-таки этот класс устроен? Я бы и сам в исходниках глянул, но боюсь, что я не знаю, где смотреть их.
Спасибо.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2013, 22:03     Как устроен std::string
Посмотрите здесь:

C++ запрошено преобразование от ‘const std::string*’ к нескалярному типу ‘std::string’
C++ Здравствуйте! Создал класс std::string. Не создается объкт типа string... Подскажите в чем причина?
Передача функции указатель на элемент std::vector<std::string> C++
C++ Где и почему используют ту или иную строку std::string, char[], System::String^ ?
C++ Как правильно перевести std::wstring в std::string ?
C++ BYTE to std::string как есть
C++ Как привести std::wstring к std::string?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12887 / 7273 / 810
Регистрация: 27.09.2012
Сообщений: 17,973
Записей в блоге: 2
Завершенные тесты: 1
19.07.2013, 22:06     Как устроен std::string #2
Цитата Сообщение от iRomul Посмотреть сообщение
Как всё-таки этот класс устроен?
Похож на вектор - все символы лежат последовательно
iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 480
Завершенные тесты: 1
19.07.2013, 22:07  [ТС]     Как устроен std::string #3
А как же медленное добавление не в конец? Или это никак не исправить?
Croessmah
Модератор
Эксперт CЭксперт С++
12887 / 7273 / 810
Регистрация: 27.09.2012
Сообщений: 17,973
Записей в блоге: 2
Завершенные тесты: 1
19.07.2013, 22:10     Как устроен std::string #4
Цитата Сообщение от iRomul Посмотреть сообщение
А как же медленное добавление не в конец?
Всегда приходится чем-то жертвовать
iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 480
Завершенные тесты: 1
19.07.2013, 22:10  [ТС]     Как устроен std::string #5
Не поспоришь. Спасибо.
Croessmah
Модератор
Эксперт CЭксперт С++
12887 / 7273 / 810
Регистрация: 27.09.2012
Сообщений: 17,973
Записей в блоге: 2
Завершенные тесты: 1
19.07.2013, 22:15     Как устроен std::string #6
А вообще, basic_string - это шаблон, так что можете посмотреть как он реализован на вашей платформе
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.07.2013, 22:32     Как устроен std::string
Еще ссылки по теме:

C++ Error C2664: std::vector<_Ty>::push: невозможно преобразовать параметр 1 из 'double' в 'const std::string &'
C++ Std::string and std::wstring convert
C++ Как вычленить цифры из строки std::string?
Операция std::cout для Объекта типа std::string C++
C++ Почему std::string_view МЕДЛЕННЕЕ, чем std::string?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.07.2013, 22:32     Как устроен std::string #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от iRomul Посмотреть сообщение
Как всё-таки этот класс устроен?
Совет 15. Помните о различиях в реализации string
Yandex
Объявления
19.07.2013, 22:32     Как устроен std::string
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru