当前位置: 首页 > 知识库问答 >
问题:

c++ - 如何解决sequence not ordered?

吴嘉禧
2023-04-29

编程语言:C++
编译器:VS2022 社区版
操作系统:Windows11
我自定义了类型CustomType,现在我想使用std::unordered_set来对std::unordered_set<CustomType>进行交并补运算,比如说std::set_union。在运行的过程中出现异常,即,sequence not ordered。
请问怎么解决?

共有1个答案

田谦
2023-04-29
#include <iostream>
#include <set>
#include <unordered_set>
#include <algorithm>
#include <iterator>

// 自定义类型
struct CustomType {
    int value;

    // 定义小于运算符,用于在 std::set 中进行比较
    bool operator<(const CustomType& other) const {
        return value < other.value;
    }
};

int main() {
    // 两个无序集合
    std::unordered_set<CustomType> set1 = { {1}, {2}, {3} };
    std::unordered_set<CustomType> set2 = { {2}, {3}, {4} };

    // 将无序集合转换为有序集合
    std::set<CustomType> ordered_set1(set1.begin(), set1.end());
    std::set<CustomType> ordered_set2(set2.begin(), set2.end());

    // 执行并集操作
    std::set<CustomType> result;
    std::set_union(ordered_set1.begin(), ordered_set1.end(),
                   ordered_set2.begin(), ordered_set2.end(),
                   std::inserter(result, result.begin()));

    // 输出结果
    for (const auto& item : result) {
        std::cout << item.value << ' ';
    }

    return 0;
}
 类似资料:
  • C STLunordered_map如何解决冲突? 看着http://www.cplusplus.com/reference/unordered_map/unordered_map/,它说“唯一的键容器中的两个元素不能有相同的键。” 这意味着容器确实在解决碰撞。然而,那一页并没有告诉我它是如何做到的。我知道一些解决冲突的方法,比如使用链表和/或探测。我想知道的是c STL无序_映射是如何解决它的。

  • 问题内容: 我正在尝试编写简单的Java代码,以在控制台上显示MongoDB集合。我在类路径中添加了mongodb-driver-3.0.0.jar。 但是,当我尝试执行代码时,它在数据库连接行给了我以下错误: 线程“主”中的异常java.lang.NoClassDefFoundError:com.montan.app.MongoDbJdbc.main(MongoDbJdbc.java:12)上的

  • 问题内容: 我试图通过我的Web项目上的applet访问客户端的临时目录。 当我自己运行小程序时,它毫无问题地得到了。 当我尝试使用javascript并调用applet方法在我的项目上获取它时,我在javascript控制台上运行。当我尝试读取temp目录下的文件时,我也遇到同样的异常。 这正是我所看到的: 怎么解决? 问题答案: 最简单的解决方案是对applet进行签名。

  • 问题内容: 我已经尝试了Oracle Java教程中的两个示例。它们都可以正常编译,但是在运行时都出现以下错误: 我想我可能将Main.java文件放在错误的文件夹中。这是目录层次结构: 这里是 我在这里做错了什么? 更新 将Main类放入graphics包中(添加package graphics;到其中)后,将类路径设置为“ _test”(包含图形的文件夹),进行编译,然后使用java grap

  • 问题内容: 我有2个函数,都返回诺言: 现在,我有了一个清单,在这两个诺言得到解决后,我想立即更新 已解决的主题应如下所示 问题答案: 创建一个承诺,当您通过的所有承诺均被拒绝或 任何 拒绝时,该承诺都会自动解决。 如果像您一样将其传递给数组,则处理成功解析的函数将收到一个数组,其中每个项目都是针对相同索引的诺言的分辨率,例如: 我个人认为传递对象更具可读性,这样您就可以在处理程序中获得一个对象,

  • 我在Oracle的Java教程中尝试了这两个示例。它们都可以很好地编译,但在运行时都会出现以下错误: 我想我可能有文件位于错误的文件夹中。 以下是目录层次结构: 这里是: 我做错了什么? 更新 在我将类放入包(我添加了)之后,将类路径设置为“_test”(包含图形的文件夹),编译它,并使用(从命令行),它工作了。 更新非常晚#2 我没有使用Eclipse(只是记事本和JDK),上面的更新解决了我的