Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2011, 23:53   #1
РагнаР
Пользователь
 
Регистрация: 19.10.2010
Сообщений: 25
По умолчанию вектор объектов класса и алгоритмы

Просветите, пожалуйста, по вопросу:
Пусть у нас есть класс, к примеру такой
Код:
class myclass
{
int a,
double b
}
со всеми необходимыми конструкторами
Пусть у нас создан и заполнен вектор объектов класса
Как теперь написать условия алгоритмов, чтобы можно было работать, к примеру, только с одной переменной из класса? То есть, как пример, сортировку по первой и сортировку по второй переменной.
Я могу написать функцию перегрузки < для сравнения по первой переменной, но для второй так нельзя.
И еще вопрос, как мне задать предикат для find_if, чтобы сравнивать, к примеру, переменную а с каким-то числом.
РагнаР вне форума Ответить с цитированием
Старый 10.04.2011, 00:33   #2
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

ну для вектора действительна выборка по индексу, то есть например
Код:
std::vector<a> data;
...
cout << data[2];
из этого и исходите
Цитата:
То есть, как пример, сортировку по первой и сортировку по второй переменной.
это ваще как?
Цитата:
Я могу написать функцию перегрузки < для сравнения по первой переменной, но для второй так нельзя.
обычно операторы сравнения для массивов перегружают сравнивая в цикле все элементы, а не какие то конкретные..
onewho вне форума Ответить с цитированием
Старый 10.04.2011, 01:00   #3
РагнаР
Пользователь
 
Регистрация: 19.10.2010
Сообщений: 25
По умолчанию

Цитата:
ну для вектора действительна выборка по индексу, то есть например
Код:

std::vector<a> data;
...
cout << data[2];

из этого и исходите
Зачем? есть стандартная функция сортировки.

Цитата:
Цитата:
То есть, как пример, сортировку по первой и сортировку по второй переменной.
это ваще как?
Так, чтобы в первом случае сортировалось по возрастанию первой переменной.
Цитата:
Цитата:
Я могу написать функцию перегрузки < для сравнения по первой переменной, но для второй так нельзя.
обычно операторы сравнения для массивов перегружают сравнивая в цикле все элементы, а не какие то конкретные..
А если так нельзя? К примеру класс книги, где поля - автор и год издания. Это в массив не загонишь?

Последний раз редактировалось РагнаР; 10.04.2011 в 01:07.
РагнаР вне форума Ответить с цитированием
Старый 10.04.2011, 07:00   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

1. Вы переопределяете оператор< и
Код:
std::sort(v.begin(), v.end());
или подобную
2. Вы пишите функцию-предикарт, которая будет выполнять сравнение двух объектов и
Код:
std::sort(v.begin(), v.end(), compare);
или подобную
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вектор из callback'ов методов класса Gongled Общие вопросы C/C++ 7 05.01.2011 16:29
Хранение в векторе объектов пользовательского класса jennya Visual C++ 4 03.10.2010 19:16
создание объектов класса Serjuk Общие вопросы C/C++ 8 13.05.2010 18:54
Коллекция объектов класса в С++ MarihuanaP Помощь студентам 2 09.05.2010 13:06
Создание объектов класса в цикле Formdet Общие вопросы .NET 4 23.04.2010 21:43