Форум программистов, компьютерный форум 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++ Программа судебных разбирательств Создать маленькую базу данных судебных разбирательств с такими полями: Судебное дело<<Причина разбирательства, Дата(день, месяц, год), Истец (Номер телефона, компания), Ответчик(Номер телефона, компания). Вывести на экран количество разбирательств по причине "Мошенничество" во введенном пользователем году. В программе должны использоваться процедуры и функции и файлы. подробнее

Показать сообщение отдельно
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
17.07.2012, 13:42     std::sort(iterator, iterator, method) подскажите как исправить
вот вам универсальный интерфейс)

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <functional>
#include <numeric>
#include <algorithm>
#include <iostream>
#include <vector>
#include <iterator>
 
template <typename Comp, typename Pred>
struct Functor {
 
  typedef typename Comp::first_argument_type T;
  typedef typename Pred::argument_type       Z;
  typedef typename Comp::result_type         R;
    
  Functor (Comp _comp, Pred _pred) : comp(_comp), pred(_pred) { }
  R operator()(Z z1, Z z2) { 
     return comp(pred(z1), pred(z2)); 
  }
private:
  Comp comp;
  Pred pred;
};
 
template <typename Comp, typename Pred>
Functor<Comp, Pred> Generate(const Comp& comp, const Pred& pred) {
  return Functor<Comp, Pred>(comp, pred);
} 
 
struct A {
  A(int i) : m_i(i) {}
  int get_i() { return m_i; } 
private:
  int m_i; 
};
 
struct GetI : public std::unary_function  <A*,int> {
  int operator()(A* a) { return a->get_i(); }
};
 
int main() {
  std::vector<A*> v;
  v.push_back(new A(5));
  v.push_back(new A(3)); 
  v.push_back(new A(-3));  
  v.push_back(new A(7));   
  std::sort (v.begin(), v.end(), Generate(std::less<int>(), GetI()));
  std::transform (v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "), GetI());
}
Bash
1
-3 3 5 7
Добавлено через 9 часов 42 минуты
врооочем
на c++11 можно сделать оригинальный вариант

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <algorithm>
#include <functional>
 
using namespace std::placeholders;
 
class Interface{
public:
    virtual ~Interface(){}
    virtual int GetI() = 0;
};
class A : public Interface{
    int i_;
public:
    A(int i): i_(i) {}
    virtual int GetI(){
        return i_;
    }
};
 
class B : public Interface{
    int i_;
public:
    B(int i): i_(i){}
    virtual int GetI(){
        return i_;
    }
};
 
class C{
    std::vector<Interface*> vec_;
public:
    ~C(){
        for (std::vector<Interface*>::iterator it = vec_.begin(); it != vec_.end(); ++it)
            delete *it;
    }
    void AddElem(Interface* pI){
        vec_.push_back(pI);
    }
 
    bool MyMeth(Interface* i, Interface* j){
        return i->GetI() < j->GetI();
    }
 
    void sort(){
        std::sort(vec_.begin(), vec_.end(), std::bind(std::mem_fn(&C::MyMeth), this, _1, _2)); 
    }
};
 
int main(){
    C *pC = new C();
 
    pC->AddElem(new A(5));
    pC->AddElem(new A(3));
    pC->AddElem(new B(1));
    pC->AddElem(new B(2));
    pC->AddElem(new A(4));
    pC->sort();
    
    delete pC;
}
 
Текущее время: 10:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru