Форум программистов, компьютерный форум, киберфорум
Наши страницы

Шаблонный класс vector. Найти объекты с названием, начинающимся на символ и со значением больше value - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ почему не видет switch? http://www.cyberforum.ru/cpp-beginners/thread1176106.html
#include <iostream> #include<conio.h> #include<stdio.h> using namespace std; int menu();
C++ Написать программу за выводом инфо по номеру телефону (структуры) Уважаемые форумчани задача следующая. Создать список, в котором хранится информация об абонентах АТС: лицевой счет, фамилия, имя, адрес проживания, номер телефона. Отсортировать записи по... http://www.cyberforum.ru/cpp-beginners/thread1176104.html
отсортировать двумерный массив по строкам без доп массивов C++
Подскажите плз как отсортировать массив двумерный по строкам, не используя доп массивов (как я понял переписывать в одномерный нельзя). Нужно два способа.
C++ Игра 2048: рекомендации к написанию
Ребят, задали написать игру 2048 в c++, даже понятия не имею что делать(
C++ Заполнить двумерный массив следующим образом http://www.cyberforum.ru/cpp-beginners/thread1176098.html
Нужно заполнить массив как на изображении, но у меня получается только по убыванию: int a; int c = 1; for(int i=11; i>=0;i--) for(int j=9;j>=0;j--) a = c++; for(int...
C++ Определить, сколько времени пройдет между двумя измерениями. Пожалуйста,помогите с задачей на структуру. Дано время t1 и время t2. Гарантируется, что t1 и t2 -время одного дня, а также что t1<t2. Определить, сколько времени пройдет от t1 до t2. Формат... подробнее

Показать сообщение отдельно
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
14.05.2014, 22:45
Цитата Сообщение от Lahden Посмотреть сообщение
Для поиска, насколько я понимаю, нужно перегрузить find(), но как лучше это сделать?
Не совсем так.
Во-первых, std::find осуществляет линейный поиск на точное совпадение. Т.е. с помощью std::find нельзя (без особых извращений) найти совпадение, если нужно учитывать только первый символ.
Во-вторых, речь должна идти не о перегрузке, а о создании своего предиката (функция, которая возвращает bool) для проверки совпадения.
И в-третьих, предикат этот нужно использовать в функции std::find_if.
Примерно код будет выглядеть так:
C++
1
2
3
4
5
6
7
8
9
bool goodFruit( const CFruit& fruit )
{
   return fruit.name[0] == symbol && fruit.weight >= value;
}
auto it = fruits.begin();
while( (it = std::find_if( it, fruits.end(), goodFruit )) != fruits.end() )
{
   cout << *it << endl;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru