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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2009, 21:50   #1
_ares_
Пользователь
 
Регистрация: 12.11.2007
Сообщений: 31
По умолчанию Вывод с помощью STL

Привет всем!
Есть структура записной книжки в классе. Как можно сделать сортировку по какому-либо полю и поиск записи по полю? с использованием STL
Подскажите плиз
Код:
#include <iostream.h>
#include <string>
#include <vector>
#include <numeric>
using namespace std;
class List
{
private:
    struct BUK
    {
        string FIO;
        string Data;
        int nom;
        string receptionTime;
        BUK *pNextBUK;  
        BUK()
        {
            pNextBUK = 0;
        }
    };
    std::vector<BUK*>_Vec;
public:
        void mysort( int (BUK*)  )
        {
            std::sort(_Vec.begin(),_Vec.end());

        }
        void output()
        {
            //std::sort(_Vec.begin(),_Vec.end(),ostream_iterator<TMyClass>(cout," "));
            std::copy(_Vec.begin(),_Vec.end(),ostream_iterator<BUK*>(cout," "));
        }
    BUK *pFirstBUK; 
    List()
    {
        pFirstBUK = NULL;
    }
    void Add(string inFIO,string inData,int innom)
    {
        BUK* pAddingBUK = new BUK;
            pAddingBUK->FIO = inFIO;
            pAddingBUK->Data = inData;
            pAddingBUK->nom = innom;

        if(pFirstBUK!=NULL) { 
            GetLast()->pNextBUK = pAddingBUK;   
        }
        else { 
            pFirstBUK = pAddingBUK;
        }
    }
    BUK* GetLast()
    {
        BUK *pCurrentBUK = pFirstBUK;   
        if(pCurrentBUK == NULL) {
            return NULL;
        }
        while(pCurrentBUK->pNextBUK!=NULL) {
            pCurrentBUK = pCurrentBUK->pNextBUK;
        }
        return pCurrentBUK;
    };
    void ShowAll()
    {
        BUK *pCurrentBUK = pFirstBUK;   
        if(pCurrentBUK == NULL) {
            cout << "Empty" << endl;
            getchar();
        }
        else
        {
            do  {   
                cout << pCurrentBUK->FIO << endl <<
                        pCurrentBUK->Data << endl <<
                        pCurrentBUK->nom << endl<< endl;
                }
            while((pCurrentBUK = pCurrentBUK->pNextBUK)!=NULL);
                                                                            
            getchar();
        }
        getchar();
    }

};
int main()
{   List vivodList;
    List *pList = new List;
    pList->Add("Ivanov","31.10.2008 09:20",1234);
    pList->Add("Petrov","31.10.2008 09:30",34565);
    pList->Add("Sidorov","31.10.2008 09:40",56743);
    pList->ShowAll();
    //std::sort(_Vec.begin(),_Vec.end(),Tmy(x));
    vivodList.mysort(&BUK::_x);
    return 0;
}
_ares_ вне форума Ответить с цитированием
Старый 19.03.2009, 22:00   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

пишите функцию сравнения элементов вида:
Код:
bool my_greater ( BUK* item1, BUK* item2 )
{
   return (item1->nom > item2->nom);
}
и сортировку вызывайте с указанием этой функции:
Код:
std::sort(_Vec.begin(), _Vec.end(), my_greater);
pu4koff вне форума Ответить с цитированием
Старый 19.03.2009, 22:06   #3
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Напишите перегрузку операции сравнения '>' или '<'. В ней пишете по какому полю именно сравнивать.
MaTBeu вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
STL Cpluser Общие вопросы C/C++ 2 22.02.2009 23:35
Отсортировать с помощью STL структуру Иллидан Общие вопросы C/C++ 2 12.11.2008 17:19
[C++]STL Mumriksnus Общие вопросы C/C++ 1 02.07.2008 20:43
Сортировка в STL xz121 Общие вопросы C/C++ 3 09.06.2008 19:30
Вывод графиков с помощью Visual Studio 2005 V3n0m Visual C++ 2 14.05.2008 22:46