Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
AmLex
Сообщений: n/a
#1

Предикаты. Выборка объектов из вектора по определённому полю - C++

11.05.2013, 21:01. Просмотров 741. Ответов 1
Метки нет (Все метки)

Здравствуйте.
Имеется некий шаблон класса, один из членов которого - вектор. Т.е. что-то вроде

C++
1
2
3
4
5
6
7
8
9
10
template <class T>
class TClass{
private:
    vector<T> rows;
    .........
public:
    TClass();
    .........
 
};
Операции с вектором опустим.
И есть несколько классов, которые будут использоваться с этим шаблоном.

Необходимо сделать выборку всех элеметов вектора, конкретное поле которых удовлетворяет определённому значению.

Т.е., предположим, есть класс :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class someClass{
    int x;
public :
    someClass(int _x){x=_x;};
    int getX( return x; )
 
};
 
// и предикат к нему
class checkX
{
    int x;
public:
    checkX (int _x)
    {
        x = _x;
    };
    bool operator ()(someClass& _someClass)
    {
        if (_someClass.getX() == x)
        {
            return true;
        }
        else
        {
            return false;
        }
    };
};
Соответственно классов несколько, предикатов ещё больше.
Можно ли в шаблоне определить какую-нибудь функцию, чтобы в качестве параметра туда передавался предикат? Чтобы можно было использовать внутри этой функции скажем find_if с разными предикатами?
И ещё вопрос, find_if возвращает первое соответствие, а как пройтись по всем элементам в векторе, которые удовлетворяют условию?

Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2013, 21:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Предикаты. Выборка объектов из вектора по определённому полю (C++):

Сортировка вектора объектов по полю - C++
Всем доброго времени суток. Знаю, что вопрос часто задаваемый, но я не нашел для себя ответа. В голове смешалось все. Лямбды, ф-ии...

Сортировка массива(вектора)структур по одному полю - C++
Код:#include &lt;iostream&gt; #include &lt;sstream&gt; #include &lt;vector&gt; #include &lt;algorithm&gt; struct Person{ std::string surname,name; ...

Сортировка массива (вектора) структур по заданному полю - C++
Нужно отсортировать массив по полю структуры. Все поля типа string. struct DatabaseData{ std::string aPointOfDeparture;//Пункт...

Отсортировать список объектов по полю класса - C++
Добрый вечер, есть некая структура, храню в списке объекты этой структуры. Хочу упорядочить список относительно интересующего меня поля...

Как сортировать вектор объектов по определенному полю? - C++
Можно ли сортировать вектор объектов по определенному полю, например по имени студента? Спасибо за помощь?

Отсортировать вектор объектов класса по определенному полю - C++
Нужно отсортировать вектор word объектов objectW по полю length. В 42 строке пытаюсь это сделать, но что-то явно не то. Подскажите...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
11.05.2013, 22:40 #2
Цитата Сообщение от AmLex Посмотреть сообщение
Можно ли в шаблоне определить какую-нибудь функцию, чтобы в качестве параметра туда передавался предикат?
Сделать шаблон от двух параметров, не?
C++
1
2
template <class T, class Pred>
class TClass{ ...
Цитата Сообщение от AmLex Посмотреть сообщение
а как пройтись по всем элементам в векторе, которые удовлетворяют условию?
Например std::for_each() с ручной проверкой каждого эл-та.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2013, 22:40
Привет! Вот еще темы с ответами:

Qsort() Как отсортировать массив объектов по полю объекта - C++
Здравствуйте! Никак не могу сладить с функцией qsort(). У меня есть класс, и в нем нужно сделать сортировку по ОДНОМУ элементу...

Реализовать поиск по заданному полю в списке объектов пользовательского типа - C++
Вечер добрый. Помогите с написанием кода Задание в dev c++ Описать структуру, содержащую следующие поля: • фамилия, имя; • номер...

Реализовать поиск по заданному полю в массиве объектов пользовательского типа - C++
Все сделал, в своей задачи, осталось только вот это, помогите. Вывод на экран информацию о людях, родившихся под знаком зодиака, название...

Реализовать поиск в массиве объектов пользовательского типа по заданному полю - C++
Создать типизированный файл, элементами которого являются сведения об автомобилях: марка, вместимость, год выпуска, цвет. Вывести марку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru