Re: vector struct
От: Alexey F  
Дата: 26.03.10 21:35
Оценка:
Здравствуйте, Stals, Вы писали:

S> sort(book,bookLen,sizeof(struct Entry),phoneSort);


Судя по имени — std::sort, судя по использованию — std::qsort (скорее, второе). Приведу примеры к обоим:
// Для qsort:
int phoneSort ( void const* left, void const* right ) {
    Entry const* leftEntry = static_cast<Entry const*> ( left ); // static_cast - более безопасный, нежели C-style cast ( struct Entry* )
    Entry const* rightEntry = static_cast<Entry const*> ( right );

    // -1, если меньше, 0, если равно и 1, если больше:
    if ( leftEntry->number < rightEntry->number ) {
        return -1;
    }
    else if ( leftEntry->number == rightEntry->number ) {
        return 0;
    }
    else {
        return 1;
    }
}


// Для std::sort:
struct SortByPhone {
    bool operator() ( Entry const& left, Entry const& right ) const {
        return left.number < right.number;
    }
};


#include <cstdlib> // для qsort
#include <algorithm> // для std::sort

// ...

std::vector<Entry> book;

int main () {
    // C-style:
    std::qsort ( &book[ 0 ], book.size (), sizeof ( Entry ), &phoneSort );

    // C++-style (рекомендую его):
    std::sort ( book.begin (), book.end (), SortByPhone () );
}


 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.