- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当两个数组中有公共(public)元素时,std set_union
是否总是从第一个数组中取出那些公共(public)元素?从下面的代码片段可以看出,它总是从第一个数组中选取共同的元素,但这是有保证的吗?如何让它从第二个开始挑选。
#include <algorithm>
#include <vector>
#include <string>
#include <iostream>
struct Foo
{
Foo(int i, const std::string& n): id(i), name(n){}
int id;
std::string name;
};
bool comp(const Foo& first, const Foo& second)
{
return first.id < second.id;
}
int main()
{
Foo foo5A(5, "A");
Foo foo10A(10, "A");
Foo foo15A(15, "A");
Foo foo20A(20, "A");
Foo foo25A(25, "A");
Foo fooA[] = {foo5A, foo10A, foo15A, foo20A, foo25A};
Foo foo10B(10, "B");
Foo foo20B(20, "B");
Foo foo30B(30, "B");
Foo foo40B(40, "B");
Foo foo50B(50, "B");
Foo fooB[] = {foo10B, foo20B, foo30B, foo40B, foo50B};
std::vector<Foo> fooUnion;
std::set_union(fooA, fooA+5, fooB, fooB+5, std::back_inserter(fooUnion), comp);
for(const auto& f : fooUnion)
{
std::cout << f.id << ":" << f.name << std::endl;
}
}
输出是:
5:A
10:A
15:A
20:A
25:A
30:B
40:B
50:B
最佳答案
是的,确实如此,来自引用文献 here :
The union of two sets is formed by the elements that are present in either one of the sets, or in both. Elements from the second range that have an equivalent element in the first range are not copied to the resulting range.
如果您希望它从第二个 (fooB) 中选择,您可以交换参数:
std::set_union(fooB, fooB+5, fooA, fooA+5, std::back_inserter(fooUnion), comp);
关于c++ - std set_union 是否总是从第一个开始获取公共(public)元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43499806/
我有以下使用算法 STL 中的 set_union() 的 C++ 代码: 9 int first[] = {5, 10, 15, 20, 25}; 10 int second[]
我有两个 vector ,我需要在第三个 vector 中合并它们(不指定第三个 vector 的大小) std::vector a = {"a","b"}; std::vector b = {"d"
我试图找出包含字符串的两个集合的并集,使用 set_union(...)功能。但是,它在 stl_algo.h 中抛出错误ar 行号 4948 - 错误: passing 'const std::__
有两个 list a (4,100); list b (4,200); 我将它们用作集合,因此是经过排序和唯一的: a.sort(); a.unique(); b.sort(); b.unique()
我正在尝试使用 set_union 获取 4 个数组的并集。这是我到目前为止的代码: int setA[5] = {2, 4, 5, 7, 8}; int setB[7] = {1, 2, 3, 4,
这是我之前 post 的延续这告诉我该怎么做很好,但实现它并没有奏效:S。我想要的只是 C++ 算法类中的 set_union(和其他集合操作)来处理我的结构。这是我目前所拥有的。 我的结构: str
我正在尝试将两组合并为一组,但是当我使用最简单的示例时,出现错误:assignment of read-only location '__result.std::_Rb_tree_const_iter
std::set_union 及其同类采用两对迭代器来操作集合。这很棒,因为它是最灵活的事情。然而,他们可以很容易地制作一个额外的便利功能,这对于 80% 的典型用途来说会更加优雅。 例如: temp
这个问题让我困惑了好几个小时,请帮我!第一次调用set_union结果正确,第二次调用结果错误,看代码: std::vector set1{ 1, 2, 3, 4, 5, 6 }; std::vect
我需要像这样调用 STL 的 set_union 函数: set a1, a2; set_union(a1.begin(), a1.end(), a2.begin(), a2.end(), inser
我想我对 C/C++ 中的赋值缺乏一些基本的了解!我有一个函数可以计算两个字符串 vector 之间的集合并集。我这样做的原因是因为算法库的函数 set_union 要求首先对两个 vector 进行
This site声称 set_union 等效于以下代码: template OutputIterator set_union ( InputIterator1 first1, InputIt
当一个或两个输入容器是具有重复对象的多重集时,算法 std:set_union 的返回值是多少? dups 会迷路吗? 让我们假设例如: multiset ms1; ms1.insert(1); ms
我目前正在从事一个涉及集合计算的项目。我正在使用函数 set_union 和 set_intersection 来计算集合的并集和交集。我的变量是: int AunionB[8]; i
当两个数组中有公共(public)元素时,std set_union 是否总是从第一个数组中取出那些公共(public)元素?从下面的代码片段可以看出,它总是从第一个数组中选取共同的元素,但这是有保证
我有两个集合,我正在尝试做一个并集(我在做一个交集时得到同样的错误)。这是错误: error C3892: 'std::_Tree_const_iterator::operator *' : you
我对如何解释下一页中为 set_union 给出的代码感到困惑:http://www.cplusplus.com/reference/algorithm/set_union/ 当函数返回时,算法如何确
我实现了 set_union、set_intersection 和 set_difference 的版本,它们接受一个排序的容器和一个排序的范围(不能在容器内), 并将运算结果写入容器。 templa
以下是STL algorithm的几个函数,使用的条件是有序容器,所以 vector在被sort了之后是可以使用的,set也是可以使用的。 set_difference 这个是求得在第一个容器中有
大家好:)我希望有人能找到解决方案或者我终于找到了^^ 上下文 我是c++的初学者,所以,object, template 和iterator 可能我理解了一点点并做了一些修改,但是当它很困难时我无法
我是一名优秀的程序员,十分优秀!