Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Теги файлов https://www.cyberforum.ru/ cpp-beginners/ thread624717.html
Можно ли средствами С++ изменять теги аудиофайлов (название, альбом, год и т.д.)? Гугл мне не помог - выдает инфу по изменениям атрибутов файла и готовые программы для работы с вышеописанными тегами....
Code::Blocks ругается C++
При компиляции Code::Blocks ругается на a = rand() % 1 + 0; почему?. #include<iostream> using namespace std; int counter_1 = 0, counter_0 = 0; inline void myFunc(); int main() { ...
C++ Отредактировать текст,удаляя из него слова,которые встречаются в предложении заданное число раз
Осталось пара заданий в практике,сам не могу разобраться как сделать,времени совсем нету,прощу помочь. 1 Отредактировать текст,удаляя из него слова,которые встречаются в предложении заданное число...
C++ Метод cin.getline(str,n,'\n'), если в строке более n-1 символа Помогите пожалуйста! Насколько знаю метод cin.getline(str,n,'\n'), должен считать n-1 символ из строки и занести в конец строки '\0', либо считать произвольное количество символом до '\n'... https://www.cyberforum.ru/ cpp-beginners/ thread624701.html
C++ Определить, в каком году было больше всего дел, связанных с мошенничеством https://www.cyberforum.ru/ cpp-beginners/ thread624693.html
Предусмотреть вывод значений для полей элементов массива записей по следующим критериям: дата, предмет судебного разбирательства, название фирмы-истца, название фирмы-обвиняемого. Определить, в каком...
C++ Программа судебных разбирательств
Создать маленькую базу данных судебных разбирательств с такими полями: Судебное дело<<Причина разбирательства, Дата(день, месяц, год), Истец (Номер телефона, компания), Ответчик(Номер телефона,...
std::bind C++
Можно ли, и если да, то как с помощью этой функции сделать следующее: auto var=std::bind(&f, "arg"); //... //... //тут надо из var вызвать f("arg")
C++ Для чего какая библиотека нужна помогите разобраться для чего какая библиотека нужна https://www.cyberforum.ru/ cpp-beginners/ thread624657.html
C++ Code::Blocks Не запускается .exe откомпилированной программы https://www.cyberforum.ru/ cpp-beginners/ thread624656.html
->Проблема решена.:)
C++ Cd key convert Здраствуйте, есть некая программа, установщик который при запуске запрашивает ключ установки вот такого вида: P4WN-02KRK-EL372-DA8KA-HX19C Y48R-6ZHGJ-5GK03-R3TPG-TH5W1 A4L1-XSH86-VLMTC-2DFF3-AB9JC... https://www.cyberforum.ru/ cpp-beginners/ thread624652.html
DU
1492 / 1138 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
17.07.2012, 02:08 0

std::sort(iterator, iterator, method) подскажите как исправить

17.07.2012, 02:08. Просмотров 2058. Ответов 13
Метки (Все метки)

Ответ

делать функцию сравнения двух интерфейсов методом какого-то класса - по мне это кривовато.
такая функция является утилитной и может пригодится в других местах, в которых не будет никаких классов С. Логичнее сделать такую функцию свободной, можно даже прямо в файле, в котором декларируется интерфейс Interface и использовать ее для сортировки:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class Interface{
public:
    virtual ~Interface(){}
    virtual int GetI() const = 0;
};
 
bool LessByI(const Interface* lhs, const Interface* rhs)
{
  return lhs->GetI() < rhs->GetI();
}
 
// где-то в другом месте, где понадобилась сортировка по I:
std::sort(begin, end, &LessByI); // просто передаем указатель на функцию
Если же так делать не хочется, то следующий по списку кандидат - функция в безымянном неймспейсе в спп файле, в котором реализуется класс С. В этом случае интерфейс класса С не засоряется лишними функциями.
Если и так не хочется, то далее такой метод лучше делать статическим, ведь внутри нет доступа ни к каким мемберам\методам класса С. Ну и когда такой доступ понадобится, то тут уже никуда не дется, придется делать метод нестатическим.

По лябмдам на харбре есть хорошая статья:
http://habrahabr.ru/post/66021/

Вернуться к обсуждению:
std::sort(iterator, iterator, method) подскажите как исправить
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.07.2012, 02:08
Готовые ответы и решения:

Std::vector<std::pair<std::vector<int>::iterator, std::vector<int>::iterator>
Вопрос по вектору. Допустим есть вектор, std::vector&lt;int&gt; vec; на каком - то этапе заполнения я...

Разыменование итератора std::list<vector<>>::iterator
Здравствуйте, есть код: list&lt;vector&lt;int&gt;&gt; L; L.push_front(vector&lt;int&gt;());...

Странная ошибка invalid initialization of non-const reference of type 'std::vector<oneVec>::iterator&
Пишу я значит двухмерный вектор, решаю проверить наличие ошибок(я просто компилирую) и выдают такую...

Разъясните код пжлст(выдает ошибку:cannot convert from 'class std::list<class c_bullet *,class std::allocator<class c_bullet *> >::iterator' to 'int')
Есть такие строки: std::list&lt;c_bullet*&gt; Bullets; ... for(auto i = Bullets.begin(); i !=...

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