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

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

Восстановить пароль Регистрация
 
AmLex
Сообщений: n/a
11.05.2013, 21:01     Предикаты. Выборка объектов из вектора по определённому полю #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++
Вектор объектов разных классов. Доступ к свойствам элемента вектора C++
C++ Удаление из вектора нескольких объектов
Как сортировать вектор объектов по определенному полю? C++
C++ Сортировка массива (вектора) структур по заданному полю

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт C++
4377 / 3220 / 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:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru