c++ set_difference(STL set_difference)算法详解
2023-06-13 09:11:55 时间
set_difference() 算法可以创建两个集合的差集,它也有两个版本的函数并且参数集和 set_union() 相同。下面是一个对降序 set 容器使用这个算法的示例:
std::set string, std::greater string words1 { one , two , three , four , five , six }; std::set string, std::greater string words2 { four , five , six , seven , eight , nine std::set string, std::greater string result; std::set_difference(std::begin(words1) , std::end(words1), std::begin(words2), std::end(words2), std::inserter(result, std::begin(result)),std::greater string // Result: two , three , one
这里调用的这个版本的函数的第 6 个参数是一个用来比较元素的函数对象,因为来自 set 容器的这段元素也用这个函数排序。通过从 words 集合中移除 word1 和 word2 共有的元素来获取差集,差集由来自 word1 的元素组成。结果得到 words1 的前三个元素的降序序列。这个算法也会返回一个迭代器,它指向目的容器被插入的最后一个元素的下一个位置。
set_symmetric_difference()算法set_symmetric_difference() 算法和先前的集合算法遵循同一种模式。下面的几条语句展示了它的用法:
std::set string words1 { one , two , three , four , five , six }; std::set string words2 { four , five , six , seven , eight , nine std::set_symmetric_difference(std::begin(words1), std::end(words1),std::begin(words2), std::end(words2),std::ostream_iterator string {std::cout, });
这个范围内的元素默认是升序排列的。集合的对称差集中的元素是两个集合中不包括它们共有元素的元素。最后一个函数的参数定义了结果集的存放位置,它是一个 ostream_iterator,因此这些元素会被写入 cout,输出内容如下:
eight nine one seven three two
自然地,这些序列中的 string 元素都是对它们使用 运算符后得到的结果,因为默认的比较函数对象类型是 less string 。
21766.html
相关文章
- 手把手带你学C++,set是个啥,有什么用?
- 老梁聊C++,为什么不能修改set里的值?如果非要修改怎么办?
- C++编程语言中重载运算符(operator)介绍「建议收藏」
- c++和java的前景谁更好?
- c++ auto类型_auto C++
- C++ vector的初始化「建议收藏」
- Windows HotFix Check Via C/C++
- C/C++ Qt TreeWidget 嵌套节点操作技巧
- C++ 格雷码位置变化序列 Gray Code
- C++提高编程笔记合集
- 【C++修炼之路】21.红黑树封装map和set
- 【C++】哈希
- C++11 多线程编程 使用lambda创建std::thread (生产/消费者模式)详解编程语言
- C++ vector的使用、创建及初始化
- C++ set初始化(STL set初始化)详解
- MySQL中SET的常见用法及示例解析(mysql中set 用法)
- 使用Redis管理Set集合的实例(set集合存入redis)
- 如何有效使用Set结构删除Redis中的数据(set删除redis)
- 删除Redis中无用的Set(删除set redis)
- 优化优化Redis集合Set的性能(redis集合set性能)
- Oracle Set命令调整你的参数配置(oracle set命令)
- Oracle SET让您掌控指令(oracle set作用)
- 利用Redis设置Set值的实现方法(redis设置set值)
- 灵活运用Redis中Set结构(redis设置set)
- 从Redis中获取Set集合的简单方法(redis获取set集合)
- C++在堆上开辟与释放二维、三维指针详细解析
- Python调用C/C++动态链接库的方法详解
- C++中用栈来判断括号字符串匹配问题的实现方法
- java及C++中传值传递、引用传递和指针方式的理解