首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对unordered_set进行Q排序或排序

对unordered_set进行Q排序或排序
EN

Stack Overflow用户
提问于 2016-02-12 18:23:57
回答 2查看 5.4K关注 0票数 0

我有一个名为unordered_set的方程式。我不是要排序,也不是要排序,下面是我运行的代码行:

代码语言:javascript
复制
qsort(&equations, equations.size(), sizeof(string), strcmp);

我得到的错误是:

代码语言:javascript
复制
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); 
EN

回答 2

Stack Overflow用户

发布于 2016-02-12 18:29:50

您需要将unordered_set复制到vector中并对其进行排序。

还可以使用stl算法进行排序:

代码语言:javascript
复制
std::sort(v.begin(), v.end());
std::sort(v.begin(), v.end(), std::greater<int>());
票数 2
EN

Stack Overflow用户

发布于 2016-02-12 18:48:19

如果可以使用std::set存储std::unordered_set的订购版本,那么只需使用std::unordered_set::begin()std::unordered_set::end()初始化新的std::set即可

代码语言:javascript
复制
#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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35360124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档