未排序向量上的 STL set_union 和 set_intersection

2023-12-06

下面是我所做的集合交集和并集测试的代码。我不明白为什么当我注释掉排序函数时输出不正确。为什么需要排序?或者我在这里遗漏了什么? 让程序员首先负责对输入进行排序的技术原因是什么?是为了保证排序不会进行两次(如果向量已经排序并且算法再次对其进行排序......)?

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
void test_vector_union();
void test_vector_intesection();

int main(int i, char * args [])
{
  cout <<endl<< "test union of unsorted vectors {1,4,3,2,0} and {6,10,2,1,4}" << endl;
  test_vector_union();
  cout <<endl<< "test intersection of unsorted vectors {1,4,3,2,0} and {6,10,2,1,4}" <<     endl;
  test_vector_intesection(); 
  return 0;
 }

void test_vector_union(){
 vector<int> x = {1,4,3,2,0};
 vector<int> y= {6,10,2,1,4};
//sort(x.begin(),x.end()); sort(y.begin(),y.end());
vector<int> z ;
set_union(x.begin(),x.end(),y.begin(),y.end(),back_inserter(z));

for (int i:z)
     cout << i <<",";
}

void test_vector_intesection(){
 vector<int> x = {1,4,3,2,0};
 vector<int> y= {6,10,2,1,4};
 //sort(x.begin(),x.end()); sort(y.begin(),y.end());
 vector<int> z ;
 set_intersection(x.begin(),x.end(),y.begin(),y.end(),back_inserter(z));

 for (int i:z)
     cout << i <<",";

}


因为它是一个要求 for std::set_union:

构造一个从 d_first 开始的排序范围,其中包含一个或两个排序范围 [first1, last1) 和 [first2, last2) 中存在的所有元素。

1) 期望两个要排序的输入范围与运算符

2)期望他们待排序与给定的比较函数 comp

(强调我的)

您不应该在未排序的范围内调用这些算法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

未排序向量上的 STL set_union 和 set_intersection 的相关文章

  • 部署 MVC4 项目时出错:找不到文件或程序集

    过去 我只需使用 Visual Studio 2012 发布到 AWS 菜单项即可部署我的 MVC4 网站 到 AWS Elastic Beanstalk 现在 程序可以在本地编译并运行 但无法部署 从消息来看 它似乎正在寻找不在当前部署的
  • 创建 DirectoryEntry 实例以供测试使用

    我正在尝试创建 DirectoryEntry 的实例 以便可以使用它来测试将传递 DirectoryEntry 的一些代码 然而 尽管进行了很多尝试 我还是找不到实例化 DE 并初始化它的 PropertyCollection 的方法 我有
  • C++:无法使用scoped_allocator_adaptor传播polymorphic_allocator

    我有一个vector
  • Func 方法参数的首选命名约定是什么?

    我承认这个问题是主观的 但我对社区的观点感兴趣 我有一个缓存类 它采用类型的缓存加载器函数Func
  • 模板类的不明确多重继承

    我有一个真实的情况 可以总结为以下示例 template lt typename ListenerType gt struct Notifier void add listener ListenerType struct TimeListe
  • SSH 主机密钥指纹与模式 C# WinSCP 不匹配

    我尝试通过 WinSCP 使用 C 连接到 FTPS 服务器 但收到此错误 SSH 主机密钥指纹 与模式不匹配 经过大量研究 我相信这与密钥的长度有关 当使用 服务器和协议信息 下的界面进行连接时 我从 WinSCP 获得的密钥是xx xx
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • 使用 Microsoft Graph API 订阅 Outlook 推送通知时出现 400 错误请求错误

    我正在尝试使用 Microsoft Graph API 创建订阅以通过推送通知获取 Outlook 电子邮件 mentions 我在用本文档 https learn microsoft com en us graph api subscri
  • 为什么禁止在 constexpr 函数中使用 goto?

    C 14 对你能做什么和不能做什么有规则constexpr功能 其中一些 没有asm 没有静态变量 看起来相当合理 但标准也不允许goto in constexpr功能 即使它允许其他控制流机制 这种区别背后的原因是什么 我以为我们已经过去
  • 跨多个控件共享事件处理程序

    在我用 C 编写的 Windows 窗体应用程序中 我有一堆按钮 当用户的鼠标悬停在按钮上时 我希望按钮的边框发生变化 目前我有以下多个实例 每个按钮一个副本 private void btnStopServer MouseEnter ob
  • c 中的错误:声明隐藏了全局范围内的变量

    当我尝试编译以下代码时 我收到此错误消息 错误 声明隐藏了全局范围内的变量 无效迭代器 节点 根 我不明白我到底在哪里隐藏或隐藏了之前声明的全局变量 我怎样才能解决这个问题 typedef node typedef struct node
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • GDK3/GTK3窗口更新的精确定时

    我有一个使用 GTK 用 C 语言编写的应用程序 尽管该语言对于这个问题可能并不重要 这个应用程序有全屏gtk window与单个gtk drawing area 对于绘图区域 我已经通过注册了一个刻度回调gtk widget add ti
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反

随机推荐

  • dplyr:如何在函数内使用 group_by ?

    我想使用使用dplyr group by函数在另一个函数中 但我不知道如何将参数传递给该函数 有人可以提供一个可行的例子吗 library dplyr data iris iris group by Species summarise n
  • 多线程嵌入式软件中的原子操作

    我一直在用 C 语言开发基于 RTOS 的嵌入式软件 并且遇到了有关从多个线程访问共享资源的问题 我有两个问题 第一个是在状态机中设置和获取状态变量的值 下面是 StateMachine object 的头文件 typedef enum S
  • 正则表达式 $1 进入变量会干扰另一个变量

    我已经在我的代码的一部分上苦苦挣扎了一段时间 但无法弄清楚 似乎与 1 的处理方式有关 但我找不到任何相关内容 正则表达式找到 16640021 并将其分配给数组中的一个位置 my one my two my articleregex qr
  • golang中有没有像OpenMP那样简单的“parallel for”?

    我正在尝试通过并行处理来优化谜题 以获得更好的性能 理想情况下 在带有 OpenMP 的 C99 中 我应该能够在 pragma omp parallel for之前for循环问题 然后应该由系统在 CPU 之间分配负载 Go 的官方文档位
  • 使用无状态(=无会话)身份验证时需要 CSRF 令牌吗?

    当应用程序依赖无状态身份验证 使用 HMAC 之类的东西 时 是否有必要使用 CSRF 保护 Example 我们有一个单页应用程序 否则我们必须在每个链接上附加令牌 a href token xyz a 用户使用以下方式验证自己的身份PO
  • 输出提示中出现 [1] 的名称和原因是什么?

    叫什么名字 1 below 其意义何在 难道永远只是 1 如果不是 那么在什么条件下是别的东西 请举例 gt bb lt c 5 6 7 gt bb 1 5 6 7 它显示了变量的计数 在你的情况下 它显示 bb lt c 5 6 7 gt
  • C++ 中 [] 的奇怪用法。怎么了? [复制]

    这个问题在这里已经有答案了 首先 这不是关于数组或运算符 重载的虚拟问题 我试图编译 Qt Creator 但在此方法中收到错误 static QList
  • 如何让触摸事件将焦点保持在它启动的小部件上?

    假设我有一个 ListView 其中一行是我的自定义视图 用户在自定义视图内部进行触摸 gt 自定义视图将处理此触摸事件 用户在自定义视图的区域内继续此触摸序列 gt 自定义视图也可以处理这些事件 问题 当用户将手指拖动到自定义 View
  • 错误 OAuthException“消息”:“邮箱需要 read_mailbox 扩展权限。”

    我在尝试访问 Facebook Graph api 邮箱时收到此错误 https graph facebook com me inbox access token
  • 防止加载多边形外部的图块

    有没有办法防止加载多边形之外的图块 我发现的最接近的例子在这里 http jsfiddle net LsvDk 23 var polygon L multiPolygon 51 509 0 08 51 503 0 08 51 503 0 0
  • 无法点击java selenium中的按钮?

    HTML 代码
  • 返回上一个 TabActivity

    我该如何解释我的问题 我有一个使用选项卡的应用程序 通过意图 而不是视图 我已经在每个视图中实现了导航 没有遇到任何问题 但我需要从全屏和横向模式下的 Activity 之一内的 ListView 启动视频播放器 因此没有选项卡 但是 当我
  • 如何阻止 Apache httpd 拒绝 HTTP PATCH 请求?

    我正在致力于实施JSON 补丁在 Bitnami Tomcat Stack 上使用 Java servlet 的规范 在 servlet 端 我通过重写 HttpServlet service 方法来处理 HTTP PATCH 方法 如下所
  • 调试设备上的 iOS/AIR 内容

    我在 FlashDevelop v 4 0 中创建了一些 Flash 内容 并将其转换为 ipa 并放在设备上 我想在设备上运行时调试内容 因为它给了我一些意想不到的行为 是否可以通过 FlashDevelop 远程调试在物理设备上调试 A
  • URLConnection 和 Socket 哪个更快

    为了从远程 url 获取数据 哪种连接类型可以快速工作 URLConnection 或 Socket 两者都有不同的用途 具体取决于您的需求 一个socket可以实现almost一种双工类型的功能 而 url 连接可以连接到给定的 URI
  • gmail 和 parse_resource gems 之间的 Ruby 自动加载冲突

    Earlier 我询问 gmail gem 中的自动加载无法找到它想要加载的文件 在构建一个最小的脚本时 我发现当我没有包含 parse resource gem 时 gmail gem 加载了它的文件 The Gmail 宝石让您可以从
  • golang http超时和goroutines累积

    我使用goroutines实现http Get超时 然后我发现goroutines的数量一直在稳步上升 当达到1000个左右时 程序就会退出 Code package main import errors io ioutil log net
  • Android 2.2 上的 GCM SERVICE_NOT_AVAILABLE

    我在 Android 2 2 设备上调用 GoogleCloudMessaging register 时收到错误 SERVICE NOT AVAILABLE 我正在编写一个使用新的 Google Play 服务的 GoogleCloudMe
  • PHP Mysql 删除查询无法正常工作

    我正在从 MYSQL 数据库中提取产品列表 并对每个产品使用删除按钮 以防操作员想要删除该产品 问题是 每次我点击列表中任何产品上的删除按钮时 第一个元素都会被删除 我下面的代码有什么问题 Products page
  • 未排序向量上的 STL set_union 和 set_intersection

    下面是我所做的集合交集和并集测试的代码 我不明白为什么当我注释掉排序函数时输出不正确 为什么需要排序 或者我在这里遗漏了什么 让程序员首先负责对输入进行排序的技术原因是什么 是为了保证排序不会进行两次 如果向量已经排序并且算法再次对其进行排