int sf(const void *a,const void *b)
{
if (*(int *)a>*(int *)b)
return 1;
if (*(int *)a<*(int *)b)
return -1;
else
return 0;
}
qsort
Цитата:
# include <iostream>
using namespace std;
int sf(const void *a,const void *b);
int main()
{
int n,k,d=0;
int db[100000];
//int tempdb[100000];
int commands[100];
cin>>n;
for (int i=0; i<n; i++)
cin>>db;
qsort((void *)db,n,sizeof(db[0]),sf);
for(int i=0; i<n; i++)
cout<<db;
return 0;
}
int sf(const void *a,const void *b)
{
if ((int)a>(int)b)
return 1;
if ((int)a<(int)b)
return -1;
else
return 0;
}
и не сортирует
что неверно?
if ((int)a>(int)b)
сравнивай значения по этим адресам:
Код:
я не совсем понял принцип работы qsort.
в int sf(const void *a,const void *b). что значит void *a?
я не совсем понял принцип работы qsort.
в int sf(const void *a,const void *b). что значит void *a?[/QUOTE]
указатель на переменную типа void, то есть указатель на переменную любого типа. Функция может сравнивать хоть бананы с апельсинами, например int и float, или int и вообще строку char* в которой текстом записано число, просто надо самому функцию сравнения прописать зная за ранее что будет сравниваться.
я не совсем понял принцип работы qsort.
в int sf(const void *a,const void *b). что значит void *a?[/QUOTE]
цитата:
...I found out an interesting fact. Most people who think that they know C really do not understand memory or pointers. They just don't get it. It's amazing that these people are working as programmers, but they are!
подпишусь под каждым словом
P.S. цитата отсюда: http://www.joelonsoftware.com/articles/fog0000000073.html
Цитата:
int sf(const void *a,const void *b)
{
if (*(int *)a>*(int *)b)
return 1;
if (*(int *)a<*(int *)b)
return -1;
else
return 0;
}
Одной строкой
Код:
inline int sf (int a, int b)
{return (a>b) ? 1 : (a<b) ? -1 : 0;}
{return (a>b) ? 1 : (a<b) ? -1 : 0;}
И вообще, передавать значение базового типа через указатель неопределённого типа - моветон.
[QUOTE=Arestov]...I found out an interesting fact. Most people who think that they know C really do not understand memory or pointers. They just don't get it. It's amazing that these people are working as programmers, but they are![/QUOTE]
Ya, ya - fershtein :)
Код:
inline int sf (int a, int b)
{return (a>b) ? 1 : (a<b) ? -1 : 0;}
{return (a>b) ? 1 : (a<b) ? -1 : 0;}
[/QUOTE]
rtfm msdn
Код:
void qsort(
void *base,
size_t num,
size_t width,
int (__cdecl *compare )(const void *, const void *)
);
void *base,
size_t num,
size_t width,
int (__cdecl *compare )(const void *, const void *)
);
Цитата:
Ya, ya - fershtein :)
Ага, я так и понял :D
...I found out an interesting fact. Most people who think that they know C really do not understand memory or pointers. They just don't get it. It's amazing that these people are working as programmers, but they are!
подпишусь под каждым словом
P.S. цитата отсюда: http://www.joelonsoftware.com/articles/fog0000000073.html[/QUOTE]
я не говорил что я профи я ученик. а по моему если чтото не понятно не грех задавать вопрос, все мы когдата начинали
Раз уж используется <iostream>, можно было бы и sort из <algorithm> использовать.
я просто не очень знаком с <algorithm> могу ли я где небуть найти описание этой библиотеки со всеми своими функциями, (или эсли можно всех возможних библиотек).
<algorithm> не библиотека, это алиас для включения определенных файлов заголовков для соответствующей части STL:
http://www.sgi.com/tech/stl/table_of_contents.html
Вся инфа по программированию под виндовс
блогодорю за сссылочки
http://www.sgi.com/tech/stl/table_of_contents.html
это стандарт или просто документация от разработчика
это стандарт или просто документация от разработчика
http://www.sgi.com/tech/stl/table_of_contents.html
это стандарт или просто документация от разработчика[/QUOTE]
А фиг его знает. Я не особый поклонник STL...
Посмотри еще Boost - они постоянно что-то там стандартизируют.
[QUOTE=michael_is_98]
это стандарт или просто документация от разработчика[/QUOTE]
А фиг его знает. Я не особый поклонник STL...
Посмотри еще Boost - они постоянно что-то там стандартизируют.
http://www.sgi.com/tech/stl/table_of_contents.html
это стандарт или просто документация от разработчика[/QUOTE]
Нет, это не стандарт.
Вот стандарт С++ 2003 года:
http://anatolix.naumen.ru/files/books/CPPStandard2003.zip
[QUOTE=michael_is_98]
это стандарт или просто документация от разработчика[/QUOTE]
Нет, это не стандарт.
Вот стандарт С++ 2003 года:
http://anatolix.naumen.ru/files/books/CPPStandard2003.zip
Тогда что же это за описание? Документация - упрощенное описание стандарта для разработчиков?
Цитата:
This site documents all of the components (classes, functions, and concepts) in the SGI Standard Template Library.
Т.е. это описание конкретной (от SGI) реализации STL.
Наверное и у STLPort'а есть что-то подобное
По самым основам STL можно почитать Г.Шилдт, С++ базовый курс, издание 3. Там он не разбирает глубоко филлософию STL, зато быстро практ. знания дает, а потом - Н. Джосъютис "С++ Стандартная библиотека для профессионалов".
У меня была одна книга, в которой в качестве одного из авторов выступает Шилдт. Он если честно похож больше на Макаревича в передаче "Смак" .
У меня была одна книга, в которой в качестве одного из авторов выступает Шилдт. Он если честно похож больше на Макаревича в передаче "Смак" .[/QUOTE]
Так на то это и Базовый курс. Лично я начал с нее, мне она тоже показалась до смешного простой, в большинстве мест, зато там досконально разобраны многие неочевидные мелочи, а по STL начало, такое, "неотпугивающее". Для глубокого познания у меня есть С++. Стандартная библиотека для профессионалов, Н. Джосъютиса, 27 метров в pdf, ее я считаю лучшей из всего что читал по STL. Могу кинуть на мыло или ftp открыть, если надо, но ее в принципе нетрудно и скачать:)
http://proklondike.com/
http://www.natahaus.ru/
http://emanual.ru/
У С.Мейерса STL рульно описана. Н.Джосьютис - тоже хорошо. Л.Аммерааль - на Шилдта немного смахивает (как мне показалось). Дж.Бентли "Жемчужины программирования" - хотя и не по STL, но супер! Для общего развития - самый раз!