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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Теги файлов http://www.cyberforum.ru/cpp-beginners/thread624717.html
Можно ли средствами С++ изменять теги аудиофайлов (название, альбом, год и т.д.)? Гугл мне не помог - выдает инфу по изменениям атрибутов файла и готовые программы для работы с вышеописанными тегами. Но их же на чем-то и как-то писали?)
C++ Code::Blocks ругается При компиляции Code::Blocks ругается на a = rand() % 1 + 0; почему?. #include<iostream> using namespace std; int counter_1 = 0, counter_0 = 0; inline void myFunc(); int main() { for(int a = 1; a <= 100 ;a++) myFunc(); http://www.cyberforum.ru/cpp-beginners/thread624711.html
C++ Отредактировать текст,удаляя из него слова,которые встречаются в предложении заданное число раз
Осталось пара заданий в практике,сам не могу разобраться как сделать,времени совсем нету,прощу помочь. 1 Отредактировать текст,удаляя из него слова,которые встречаются в предложении заданное число раз. предусмотреть ввод и вывод данных на дисплей либо в файл. Заранее спасибо! Одна тема - один вопрос!
Метод cin.getline(str,n,'\n'), если в строке более n-1 символа C++
Помогите пожалуйста! Насколько знаю метод cin.getline(str,n,'\n'), должен считать n-1 символ из строки и занести в конец строки '\0', либо считать произвольное количество символом до '\n' включительно. Вот... пишу такую штуку: #include <iostream> using namespace std; enum A {STR = 2, LEN = 100};
C++ Определить, в каком году было больше всего дел, связанных с мошенничеством http://www.cyberforum.ru/cpp-beginners/thread624693.html
Предусмотреть вывод значений для полей элементов массива записей по следующим критериям: дата, предмет судебного разбирательства, название фирмы-истца, название фирмы-обвиняемого. Определить, в каком году было больше всего дел, связанных с мошенничеством
C++ Программа судебных разбирательств Создать маленькую базу данных судебных разбирательств с такими полями: Судебное дело<<Причина разбирательства, Дата(день, месяц, год), Истец (Номер телефона, компания), Ответчик(Номер телефона, компания). Вывести на экран количество разбирательств по причине "Мошенничество" во введенном пользователем году. В программе должны использоваться процедуры и функции и файлы. подробнее

Показать сообщение отдельно
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
17.07.2012, 02:08
делать функцию сравнения двух интерфейсов методом какого-то класса - по мне это кривовато.
такая функция является утилитной и может пригодится в других местах, в которых не будет никаких классов С. Логичнее сделать такую функцию свободной, можно даже прямо в файле, в котором декларируется интерфейс 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/
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru