1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
| ammaximus |
11.02.2009 10:08
Сообщение
#1
|
![]() Ночной волк ![]() ![]() Группа: Пользователи Сообщений: 103 Пол: Мужской Репутация: 1 |
Работа с библиотекой STL. Требуется создать вектор указателей на объекты типа алкогольные напитки. Программа должна уметь добавлять новый элемент, удалять элемент, сортировать по убыванию названия, находить первое включение указанного напитка.
1. В чем ошибки? Нерабочие участки программы закомментированы. 2. Как реализовать по убыванию с помощью итератора? Что за итератор возвращает обратное значение 3. Как присвоить значение итератору? У меня что то = не работает. #include <iostream> -------------------- Не думай о белой обезьяне.
|
![]() ![]() |
| volvo |
19.02.2009 18:35
Сообщение
#2
|
|
Гость |
Цитата finder : std::binary_function<alcohol*, string, bool> Хм... Ну, смотри... Создаем свой функтор - наследник от класса std::binary_function, то есть, функтор (так же как делает это binary_function) будет принимать 2 аргумента: первый - типа alcohol*, второй - типа string... А возвращать функтор будет значение типа bool (именно в таком порядке конкретизируется binary_function<>: тип первого параметра, тип второго параметра, и тип результата, обрати внимание).А теперь - суть этого метода: при проходе по вектору КАЖДЫЙ его элемент передается в созданный функтор, и там сравнивается с заданной строкой... Причем, поскольку использована bind2nd, то доп. аргумент(строка в нашем случае) передается вторым параметром, а итератор - первым. Если надо, чтобы сначала передавался доп. аргумент, а потом - итератор, то используется bind1st... Ну, к примеру, можно было бы переписать функтор с другим порядком аргументов: struct id_finder : std::binary_function<string, alcohol*, bool> , и вызвать MyIterator = find_if(MyVector.begin(), MyVector.end(), bind1st(finder(), "Alcohol3"));, тоже было бы корректно... Цитата Можешь что-нибудь посоветовать по STL? Я пользуюсь книгой Николай Джосьютис, С++ Стандартная библиотека для профессионалов, ISBN: 5-94723-635-4 (английский вариант: "The C++ Standard Library: A Tutorial and Reference" Nicolai M. Josuttis, ISBN: 0-201-37926-0) и Scott Meyers: Effective STL |
ammaximus STL, Итераторы C++ 11.02.2009 10:08
volvo А у тебя ошибки начинаются еще ДО того, как что-то... 11.02.2009 23:41
ammaximus Спасибо огрмное Volvo. Все исправил.
Только не вы... 18.02.2009 18:39
volvo Используй find_if:
// пишешь свой функтор
struct ... 18.02.2009 19:54
ammaximus Т.Павловская, методичку свою, еще какие-то докумен... 19.02.2009 17:48![]() ![]() |
|
Текстовая версия | 11.12.2025 17:22 |