![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Dimonius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 11.10.2006 Репутация: нет Всего: 1 |
Приветствую всех,
Недавно получил вопрос, на который я до сих пор не знаю ответ, вот решил у вас спросить. Второй вопрос возник у меня в процессе работы. Помогите пожалуйста разобраться.
Пример для второго вопроса:
|
|||
|
||||
| maxdiver |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 29.1.2008 Где: Саратов Репутация: нет Всего: 18 |
1) будет сгенерировано исключение bad_alloc;
2) при такой организации данных функция find будет сравнивать не объекты, а указатели, что вероятно не то, что нужно. функции find_if же можно просто передать указатель на нашу функцию сравнения, например, такую: bool MyClass_ptr_eq (const pair<int,const MyClass*> & a) { return *a.second == some_value; } ну а дальше уже, если такая функция не нравится, можно заюзать шаблоны. Это сообщение отредактировал(а) maxdiver - 17.2.2008, 18:24 |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
кстати, функтор (класс с перенгруженным оператором скобки) тут всегда лучше. писать не намного больше, а расширяемость и изменяемость почти бесконечная
|
|||
|
||||
| Dimonius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 11.10.2006 Репутация: нет Всего: 1 |
maxdiver, спасибо - попробую, позже отпишусь о результатах
скиньте ссылочку на доку, где описано в чем преимущество функторов, если есть Это сообщение отредактировал(а) Dimonius - 18.2.2008, 17:27 |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
http://forum.vingrad.ru/faq/topic-157894.html
тут крайне кратко написано, ЧТО это. а ЧЕМ ЭТО ЛУЧШЕ - уж поищи в инете Добавлено через 1 минуту и 13 секунд для затравки скажу, что функторы нужно знать и любить, без них в современном С++ обществе ну никак |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
или не будет. прога может запросто свалится с segfault'ом. смотреть например секцию bugs в malloc(3) и читать Саттера. короче, в практических целях следует думать что new всегда завершается успешно. Это сообщение отредактировал(а) Mayk - 19.2.2008, 09:24 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| Dimonius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 11.10.2006 Репутация: нет Всего: 1 |
Неужели получается, что написать устойчивую к нехватке памяти прогу невозможно? То есть на самом деле зависит от того как ядро работает... Как же все таки быть? |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
лови исключения операционной системы
|
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Если ты пишешь не для микроконтроллеров то толку от такой проверке будет почти что ноль. А вот код усложнится изрядно. В обычной жизни данные проверки не нужны ибо емнип один из аргументов Саттера был в стиле "вы в любом случае не получите сообщение об ошибке: ибо из-за того что прога будет много свопится и тормозить всю систему до того как вся доступная память закончится, пользователь её просто убьёт". Ещё один из аргументов был "ну поймали мы, а дальше что? вывести красивое сообщение об ошибке и умереть? но памяти то на красивое сообщение может просто и не хватить" . ps. как жестокий эксперимнтатор хочу сказать что даже с отключенным свопом система [lnx] начинает ЖУТКО тормозить при заканчивании памяти что программу иной раз проще убить чем дождаться OOM Killer'а. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| Dimonius |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 11.10.2006 Репутация: нет Всего: 1 |
||||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
все - там ОЧЕНЬ много полезного
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |