std::qsort
From cppreference.com
Defined in header <cstdlib>
|
||
void qsort( const void *ptr, std::size_t count, std::size_t size, int (*comp)(const void *, const void *) ); |
||
Sorts the given array pointed to by ptr
in ascending order. The array contains count
elements of size size
. Function pointed to by comp
is used for object comparison.
Contents |
[edit] Parameters
ptr | - | pointer to the array to sort | |||||||||
count | - | number of element in the array | |||||||||
size | - | size of each element in the array in bytes | |||||||||
comp | - | comparison function which returns a negative integer value if the first argument is less than the second, a positive integer value if the first argument is greater than the second and zero if the arguments are equal.
The function must not modify the objects passed to it. |
[edit] Return value
(none)
[edit] Notes
The type of the elements of the array must be a trivial type, otherwise the behavior is undefined.
[edit] Example
The following code sorts an array of integers using qsort()
.
#include <iostream> #include <cstdlib> int compare_ints(const void* a, const void* b) // comparison function { int arg1 = *reinterpret_cast<const int*>(a); int arg2 = *reinterpret_cast<const int*>(b); if(arg1 < arg2) return -1; if(arg1 > arg2) return 1; return 0; } int main() { int a[] = { -2, 99, 0, -743, 2, 3, 4 }; constexpr std::size_t size = sizeof(a)/sizeof(int); std::qsort(a, size, sizeof(int), compare_ints); for (int ai : a) std::cout << ai << ' '; }
Output:
-743 -2 0 2 3 4 99
[edit] See also
searches an array for an element of unspecified type (function) | |
sorts a range into ascending order (function template) | |
(C++11) |
checks if a type is trivial (class template) |
C documentation for qsort
|