列表容器上的std::set_difference
std::set_difference on list container
我正在尝试调用set_difference函数,并将结果放在std::列表中。理论上,在任何排序的容器上都可以这样做,对吧?
list<int> v;
list<int> l1;
list<int> l2;
list<int>::iterator it;
//l1 and l2 are filled here
l1.sort();
l2.sort();
it=set_difference(
l1.begin(),
l1.end(),
l2.begin(),
l2.end(),
v.begin()
);
然而,v以空列表的形式返回。是因为我不能在列表容器中使用它吗?
v.begin()
是一个空序列的开头。元素几乎被复制到任何地方。将其替换为std::back_inserter(v)
。这将为您提供一个迭代器,它知道如何插入到v
中。
您需要提供一个输出迭代器,该迭代器将插入。尝试使用std::inserter
。
std::list<int> a {
10, 10, 10, 11, 11, 11, 12, 12, 12, 13
};
std::list<int> b {
10
};
std::list<int> diff;
std::set_difference(a.begin(), a.end(), b.begin(), b.end(),
std::inserter(diff, diff.begin()));
相关文章:
- Difference in displaying cv2 Mat
- 为什么我无法更改"set<set>"循环中的值<int>
- 对于set上的循环-获取next元素迭代器
- 在声明中合并两个常量"std::set"(不是在运行时)
- 有没有办法对std::unordered_set、std::unrdered_map、std::set、std::map
- 将 std::set 与基于键的比较器一起使用
- 如何使用set实现无序数据结构?
- 使用运算符调用 void 函数时出错<set>
- 修改"std::set"中用户定义类型的值
- 生成提升::hana::set 的常量表达式问题
- 如何在构造函数参数中初始化"std::set"?
- 如何使用 lower_bound/upper_bound 从 std::set 获取索引号?
- 如何在 C++ 中转发声明 std::set?
- 重构使用动态强制转换的 std::set 的比较运算符
- set::find 查找不存在的元素
- 为什么 std::set.erase(first, last) 会影响从中获取 (first, last) 的容器?
- 将 std:set<int32_t> 复制到 std::set <uint32_t>的好方法
- 错误 C2676:std::set::const_iterator 没有运算符 + 函数?
- std::set 是否将对象连续存储在内存中?
- 是否有一个 std::set 函数来确定不超过数字 x 的最大元素?