Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri - C++
на вод поступают 2 строки типа string. определить количество вхождений строки 2 в строку 1 ошибка error: cannot convert 'std::string {aka...

Как правильно перевести std::wstring в std::string ? - C++
Собственно как? :)

запрошено преобразование от ‘const std::string*’ к нескалярному типу ‘std::string’ - C++
private: std::string firstName; }; std::string ClientData::getFirstName() const{ return firstName; } Дает в итоге...

Как привести std::wstring к std::string? - C++
Как привести std::wstring к std::string?

На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами - C++
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же числа, но не в виде строк, а в виде...

Реализация класса MyString. Стандартная библиотека, std::string, std::vector - C++
как добавить реализацию конкатенации строк через перегрузку оператора &quot;+=&quot; в классе MyString и почему ошибка выдается???#include...

6
Croessmah
Пришел
Эксперт CЭксперт С++
13764 / 7845 / 894
Регистрация: 27.09.2012
Сообщений: 19,258
Записей в блоге: 3
Завершенные тесты: 1
19.07.2013, 22:06 #2
Цитата Сообщение от iRomul Посмотреть сообщение
Как всё-таки этот класс устроен?
Похож на вектор - все символы лежат последовательно
0
iRomul
159 / 100 / 11
Регистрация: 17.10.2012
Сообщений: 483
Завершенные тесты: 1
19.07.2013, 22:07  [ТС] #3
А как же медленное добавление не в конец? Или это никак не исправить?
0
Croessmah
Пришел
Эксперт CЭксперт С++
13764 / 7845 / 894
Регистрация: 27.09.2012
Сообщений: 19,258
Записей в блоге: 3
Завершенные тесты: 1
19.07.2013, 22:10 #4
Цитата Сообщение от iRomul Посмотреть сообщение
А как же медленное добавление не в конец?
Всегда приходится чем-то жертвовать
1
iRomul
159 / 100 / 11
Регистрация: 17.10.2012
Сообщений: 483
Завершенные тесты: 1
19.07.2013, 22:10  [ТС] #5
Не поспоришь. Спасибо.
0
Croessmah
Пришел
Эксперт CЭксперт С++
13764 / 7845 / 894
Регистрация: 27.09.2012
Сообщений: 19,258
Записей в блоге: 3
Завершенные тесты: 1
19.07.2013, 22:15 #6
А вообще, basic_string - это шаблон, так что можете посмотреть как он реализован на вашей платформе
0
alsav22
5431 / 4826 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.07.2013, 22:32 #7
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от iRomul Посмотреть сообщение
Как всё-таки этот класс устроен?
Совет 15. Помните о различиях в реализации string
3
19.07.2013, 22:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.07.2013, 22:32
Привет! Вот еще темы с ответами:

Операция std::cout для Объекта типа std::string - C++
Кто детально объяснит почему не выводит ? Дает вот так &quot;Отсутствует оператор &quot;&lt;&lt;&quot;, соответствующий этим операндам&quot; void...

Передача функции указатель на элемент std::vector<std::string> - C++
Доброй ночи тем, кому не спится (или живет в другом часовом поясе:p)! Есть функция, требующая в качестве параметра указатель на...

Почему std::string_view МЕДЛЕННЕЕ, чем std::string? - C++
Всем привет! Нужно найти количество уникальных строк в больших текстовых файлах (размером до нескольких гигабайт). Почему в...

Error C2664: std::vector<_Ty>::push: невозможно преобразовать параметр 1 из 'double' в 'const std::string &' - C++
#include &lt;iostream&gt; #include &lt;stack&gt; #include &lt;sstream&gt; #include &lt;string&gt; using namespace std; int main() { string...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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