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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2015, 16:00   #1
NEoMASTERR
Форумчанин
 
Аватар для NEoMASTERR
 
Регистрация: 22.12.2010
Сообщений: 175
По умолчанию Сортировка вектора

Здравствуйте, имеется необходимость отсортировать вектор по определённому принципу, в интернете только примеры с <int> но у меня свой шаблон (не знаю правильно ли я называю то что имею ввиду). В общем есть структура

Код:
struct TClientConnected
{
	unsigned int id;
	int socket;
	unsigned char servstatus;
	std::string capcha;
	unsigned char capcha_tries;
	struct sockaddr addr;
	std::vector<TClientConnected*> *cl;
};
И вектор

Код:
	std::vector<TClientConnected*> client;
Надо отсортировать ячейки по id.

Пробовал так:
Код:
#include <algorithm>    // std::binary_search, std::sort

bool SortClientById(std::vector<TClientConnected*>::iterator i,std::vector<TClientConnected*>::iterator j) 
{
	return (((TClientConnected*)*i)->id < ((TClientConnected*)*j)->id);
}

////////////////////////
std::sort(ws->client.begin(), ws->client.end(), SortClientById);  // <<-- 
////////////////////////
Идут ругачки в виде
Цитата:
Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка C2664 "bool (std::_Vector_iterator<std::_Vector _val<std::_Simple_types<TClientConn ected *>>>,std::_Vector_iterator<std::_Ve ctor_val<std::_Simple_types<TClient Connected *>>>)": невозможно преобразовать аргумент 2 из "TClientConnected *" в "std::_Vector_iterator<std::_Vector _val<std::_Simple_types<TClientConn ected *>>>" linux1 d:\vs\vc\include\algorithm 3118
Подскажите пожалуйста как сортировать.
Здравствуйте
NEoMASTERR вне форума Ответить с цитированием
Старый 22.12.2015, 16:06   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А разве для стандартной sort() не void в параметрах функции передавать?:
Код:
bool SortClientById(void*  i,void* j) 
{
	return (((TClientConnected*)*i)->id < ((TClientConnected*)*j)->id);
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.12.2015, 16:07   #3
NEoMASTERR
Форумчанин
 
Аватар для NEoMASTERR
 
Регистрация: 22.12.2010
Сообщений: 175
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А разве для стандартной sort() не void в параметрах функции передавать?:
Код:
bool SortClientById(void*  i,void* j) 
{
	return (((TClientConnected*)*i)->id < ((TClientConnected*)*j)->id);
}
Немного подумав я решил что передаётся не итератор а сам объект

Код:
bool SortClientById(TClientConnected* i,TClientConnected* j) 
{
	return (i->id < j->id);
}
Это уже компилируется и не ругается, щас проверю
Здравствуйте
NEoMASTERR вне форума Ответить с цитированием
Старый 22.12.2015, 16:08   #4
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Код:
bool SortClientById(const TClientConnected* f, const TClientConnected* s) 
{
	return f->id < s->id ;
}
Это примерно. Пишу со смартфона )))
Croessmah вне форума Ответить с цитированием
Старый 22.12.2015, 16:14   #5
NEoMASTERR
Форумчанин
 
Аватар для NEoMASTERR
 
Регистрация: 22.12.2010
Сообщений: 175
По умолчанию

Цитата:
Сообщение от Croessmah Посмотреть сообщение
Код:
bool SortClientById(const TClientConnected* f, const TClientConnected* s) 
{
	return f->id < s->id ;
}
Это примерно. Пишу со смартфона )))
Да, всё верно, всем спасибо, рано запаниковал)
Здравствуйте
NEoMASTERR вне форума Ответить с цитированием
Старый 22.12.2015, 17:37   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Croessmah
Форум не дает плюсовать, поэтому салютую на словах.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.12.2015, 17:39   #7
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
поэтому салютую на словах.
А что, уже новый год?
Croessmah вне форума Ответить с цитированием
Старый 22.12.2015, 20:03   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну еще чуть-чуть и... Выщь мэри крысмас.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка вектора Anthoni Общие вопросы C/C++ 3 24.11.2012 22:16
Сортировка вектора DarkEN_ANGEL Общие вопросы C/C++ 11 24.05.2012 18:51
Сортировка вектора G-58 Visual C++ 2 18.05.2011 21:26
Сортировка элементов вектора Blad47 Общие вопросы C/C++ 10 29.11.2010 18:42
Сортировка элементов вектора m9yt Общие вопросы C/C++ 1 28.04.2010 18:13