![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| inside_pointer |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 5 Всего: 12 |
всё
|
||||
|
|||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
inside_pointer,
вылетает при запуске на визуал студии Добавлено через 5 минут и 55 секунд inside_pointer в GCC std::string хранит только указатель на char, потому там сработает..только вот стандарт этого не гарантирует.
по вашему это красивее и правильнее чем
? |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| inside_pointer |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 5 Всего: 12 |
ну я там писал, что если совпадёт, то можно а если не совпадёт, то тоже можно Добавлено @ 12:03 mes, ну, это прямой доступ к указателю на первый символ, а не посредством компилятора (типа, как он там решит) Это сообщение отредактировал(а) inside_pointer - 15.4.2009, 12:07 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| inside_pointer |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 5 Всего: 12 |
ну, empty тоже запоминать тогда надо, в итоге разрастётся всё это как Visual Basic - триста операторов, все по-мелочи
|
|||
|
||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
а если допустить, что класс может быть описан примерно так
? не говоря уже о строках с COW..там буффер получается "запрятан еще дальше". А также совсем не обязательно чтоб буффер был представлен как char *. Добавлено @ 12:16 если память плохая, можно заглянуть в документацию. Добавлено через 3 минуты и 28 секунд
от запомнить ничего не разростется. Добавлено через 5 минут и 42 секунды вобще-то доступ через интерфейс, определяет не компилятор, а программист/ы, написавший этот компонент. а компилятор лишь следит (в силу своих возможностей) за установленными договоренностями . Это сообщение отредактировал(а) mes - 15.4.2009, 12:16 |
||||||
|
|||||||
| inside_pointer |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 5 Всего: 12 |
какой компонент, компонент компилятора ?
это как, а в чём смысл иного представления ? char - минимальный размер, чем меньше размер, тем меньше требований к выравниванию |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
класс, функция или библиотека. В нашем случае класс string. вот почуствуйте разницу между возможной реализцией внутренней функции и того что Вы предлагали :
как видете, Ваш способ имеет вероятность обращения по нулевому указателю. а может она хранит внутри себя как юникод ? Это сообщение отредактировал(а) mes - 15.4.2009, 12:49 |
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Почитайте главу "Ослабленная монолитность std::string" в книге Саттера "Решение более сложных задач на С++". Там он говорит о том что многие функции класса std::string могли бы быть глобальными, например тот же empty
это можно применять с любым STL совместимым контейнером. И это приемлемый способ (и даже лучше чем тот что есть сейчас)..но ваш я приемлемым никак не могу назвать Это сообщение отредактировал(а) azesmcar - 15.4.2009, 12:55 |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
но это тоже не избавит от запоминания функции empty |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Склероз лечится
Это сообщение отредактировал(а) azesmcar - 15.4.2009, 13:21 |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
это можно применять с чем угодно. и если передадим не контейнер, то получим шквал ругательств от компилятора.
а вообще да, способ хороший. мне нравится |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
под словом применение я понимаю "использовать так чтобы работало" |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |