| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > std::map размерность и алгоритмы |
| Автор: Dimonius 17.2.2008, 16:27 | ||
| Приветствую всех, Недавно получил вопрос, на который я до сих пор не знаю ответ, вот решил у вас спросить. Второй вопрос возник у меня в процессе работы. Помогите пожалуйста разобраться.
Пример для второго вопроса:
|
| Автор: maxdiver 17.2.2008, 18:19 |
| 1) будет сгенерировано исключение bad_alloc; 2) при такой организации данных функция find будет сравнивать не объекты, а указатели, что вероятно не то, что нужно. функции find_if же можно просто передать указатель на нашу функцию сравнения, например, такую: bool MyClass_ptr_eq (const pair<int,const MyClass*> & a) { return *a.second == some_value; } ну а дальше уже, если такая функция не нравится, можно заюзать шаблоны. |
| Автор: Alek86 18.2.2008, 11:29 |
| кстати, функтор (класс с перенгруженным оператором скобки) тут всегда лучше. писать не намного больше, а расширяемость и изменяемость почти бесконечная |
| Автор: Dimonius 18.2.2008, 17:19 | ||
maxdiver, спасибо - попробую, позже отпишусь о результатах
скиньте ссылочку на доку, где описано в чем преимущество функторов, если есть |
| Автор: Alek86 18.2.2008, 18:21 |
| http://forum.vingrad.ru/faq/topic-157894.html тут крайне кратко написано, ЧТО это. а ЧЕМ ЭТО ЛУЧШЕ - уж поищи в инете Добавлено через 1 минуту и 13 секунд для затравки скажу, что функторы нужно знать и любить, без них в современном С++ обществе ну никак |
| Автор: Mayk 19.2.2008, 09:24 |
или не будет. прога может запросто свалится с segfault'ом. смотреть например секцию bugs в http://linux.die.net/man/3/malloc и читать Саттера. короче, в практических целях следует думать что new всегда завершается успешно. |
| Автор: Alek86 19.2.2008, 16:57 |
| лови исключения операционной системы |
| Автор: Mayk 19.2.2008, 17:33 | ||
Если ты пишешь не для микроконтроллеров то толку от такой проверке будет почти что ноль. А вот код усложнится изрядно. В обычной жизни данные проверки не нужны ибо емнип один из аргументов Саттера был в стиле "вы в любом случае не получите сообщение об ошибке: ибо из-за того что прога будет много свопится и тормозить всю систему до того как вся доступная память закончится, пользователь её просто убьёт". Ещё один из аргументов был "ну поймали мы, а дальше что? вывести красивое сообщение об ошибке и умереть? но памяти то на красивое сообщение может просто и не хватить" . ps. как жестокий эксперимнтатор хочу сказать что даже с отключенным свопом система [lnx] начинает ЖУТКО тормозить при заканчивании памяти что программу иной раз проще убить чем дождаться OOM Killer'а. |
| Автор: Dimonius 25.2.2008, 15:43 |
А какую именно книгу? У меня есть "Новые сложные задачи на C++". Она? |
| Автор: Alek86 25.2.2008, 15:49 |
| все - там ОЧЕНЬ много полезного |