我有一个名为unordered_set的方程式。我不是要排序,也不是要排序,下面是我运行的代码行:
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); 发布于 2016-02-12 18:29:50
您需要将unordered_set复制到vector中并对其进行排序。
还可以使用stl算法进行排序:
std::sort(v.begin(), v.end());
std::sort(v.begin(), v.end(), std::greater<int>());发布于 2016-02-12 18:48:19
如果可以使用std::set存储std::unordered_set的订购版本,那么只需使用std::unordered_set::begin()和std::unordered_set::end()初始化新的std::set即可
#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;
}https://stackoverflow.com/questions/35360124
复制相似问题