![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
ammaximus |
![]()
Сообщение
#1
|
![]() Ночной волк ![]() ![]() Группа: Пользователи Сообщений: 103 Пол: Мужской Репутация: ![]() ![]() ![]() |
Работа с библиотекой STL. Требуется создать вектор указателей на объекты типа алкогольные напитки. Программа должна уметь добавлять новый элемент, удалять элемент, сортировать по убыванию названия, находить первое включение указанного напитка.
1. В чем ошибки? Нерабочие участки программы закомментированы. 2. Как реализовать по убыванию с помощью итератора? Что за итератор возвращает обратное значение 3. Как присвоить значение итератору? У меня что то = не работает. #include <iostream> -------------------- Не думай о белой обезьяне.
|
![]() ![]() |
volvo |
![]()
Сообщение
#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 |
![]() ![]() |
![]() |
Текстовая версия | 30.07.2025 4:14 |