我有unordered_set
个叫方程式。我没有排序或qsort是,这是我正在运行的代码行:
qsort(&equations, equations.size(), sizeof(string), strcmp);
我得到的错误是:
error: cannot convert 'std::unordered_set<std::basic_string<char> >' to 'void*'
for argument '1' to 'void qsort(void*, size_t, size_t, __compar_fn_t)'
qsort(equations, equations.size(), sizeof(string), strcmp);
答案 0 :(得分:2)
您需要将unordered_set
复制到vector
并对其进行排序。
还使用stl算法进行排序:
std::sort(v.begin(), v.end());
std::sort(v.begin(), v.end(), std::greater<int>());
答案 1 :(得分:0)
如果您可以使用std::set
存储std::unordered_set
的订购版本,则可以使用std::set
和std::unordered_set::begin()
初始化新的std::unordered_set::end()
:
#include <iostream>
#include <unordered_set>
#include <set>
int main()
{
std::unordered_set<int> unordered = { 9,1,8,2,7,3,6,4,5 };
std::set<int> ordered(unordered.begin(), unordered.end());
std::cout << "Before: ";
for (auto iter = unordered.begin(); iter != unordered.end(); ++iter)
{
std::cout << *iter << ", ";
}
std::cout << std::endl;
std::cout << "After: ";
for (auto iter = ordered.begin(); iter != ordered.end(); ++iter)
{
std::cout << *iter << ", ";
}
std::cout << std::endl;
}