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

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

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

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

11.05.2013, 21:01. Просмотров 708. Ответов 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++ Сортировка массива (вектора) структур по заданному полю
C++ Qsort() Как отсортировать массив объектов по полю объекта
C++ Отсортировать список объектов по полю класса
C++ Поиск в массиве объектов типа Student по заданному полю (массивы, структуры)
Поиск в массиве объектов типа Student по заданному полю (массивы, структуры) C++
Сортировка вектора объектов по полю C++
Реализовать поиск по заданному полю в массиве объектов ползовательского типа (структуры) C++
Реализовать поиск по заданному полю в массиве объектов пользовательского типа C++
Реализовать поиск по заданному полю в массиве объектов пользовательского типа C++
C++ Отсортировать вектор объектов класса по определенному полю

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4384 / 3227 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
11.05.2013, 22:40     Предикаты. Выборка объектов из вектора по определённому полю #2
Цитата Сообщение от AmLex Посмотреть сообщение
Можно ли в шаблоне определить какую-нибудь функцию, чтобы в качестве параметра туда передавался предикат?
Сделать шаблон от двух параметров, не?
C++
1
2
template <class T, class Pred>
class TClass{ ...
Цитата Сообщение от AmLex Посмотреть сообщение
а как пройтись по всем элементам в векторе, которые удовлетворяют условию?
Например std::for_each() с ручной проверкой каждого эл-та.
Yandex
Объявления
11.05.2013, 22:40     Предикаты. Выборка объектов из вектора по определённому полю
Ответ Создать тему
Опции темы

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