Add wxVectorSort function for sorting wxVector<T> containers. Closes #11889
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63904 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -18,6 +18,11 @@
|
||||
|
||||
#include <vector>
|
||||
#define wxVector std::vector
|
||||
template<typename T>
|
||||
inline void wxVectorSort(wxVector<T>& v)
|
||||
{
|
||||
std::sort(v.begin(), v.end());
|
||||
}
|
||||
|
||||
#else // !wxUSE_STL
|
||||
|
||||
@@ -437,6 +442,40 @@ inline typename wxVector<T>::size_type wxVector<T>::erase(size_type n)
|
||||
}
|
||||
#endif // WXWIN_COMPATIBILITY_2_8
|
||||
|
||||
|
||||
|
||||
namespace wxPrivate
|
||||
{
|
||||
// This function is a helper for the wxVectorSort function, and should
|
||||
// not be used directly in user's code.
|
||||
|
||||
template<typename T>
|
||||
int wxVectorSort_compare(const void* pitem1, const void* pitem2, const void* )
|
||||
{
|
||||
const T& item1 = *reinterpret_cast<const T*>(pitem1);
|
||||
const T& item2 = *reinterpret_cast<const T*>(pitem2);
|
||||
|
||||
if (item1 < item2)
|
||||
return -1;
|
||||
else if (item2 < item1)
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace wxPrivate
|
||||
|
||||
|
||||
|
||||
template<typename T>
|
||||
void wxVectorSort(wxVector<T>& v)
|
||||
{
|
||||
wxQsort(v.begin(), v.size(), sizeof(T),
|
||||
wxPrivate::wxVectorSort_compare<T>, NULL);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif // wxUSE_STL/!wxUSE_STL
|
||||
|
||||
#if WXWIN_COMPATIBILITY_2_8
|
||||
|
Reference in New Issue
Block a user