gpt4 book ai didi

C++:如何通过删除多个元素来删除 "set"?

转载 作者:搜寻专家 更新时间:2023-10-31 00:54:59 28 4
gpt4 key购买 nike

STL算法中有set_union, set_difference, set_intersection, set_symmetric_difference等“集合”运算,但我希望在2个 vector 之间进行:

vector<int> A={1,2,3,4};
vector<int> B={1,3};

我希望得到 A-B,所以 A-B={2,4}。

有没有方便的方法来做这个“减”?谢谢!

最佳答案

您绝对可以使用 set_ vector 上的算法, 只要 vector已排序。然后您可以使用 back_inserter() 将输出推送到另一个 vector :

#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
int main() {
std::vector<int> v1 {1, 2, 3, 4};
std::vector<int> v2 {1, 3};
std::vector<int> out;
std::set_difference(std::begin(v1), std::end(v1), // the first vector...
std::begin(v2), std::end(v2), // ...minus the second...
std::back_inserter(out)); // ...is stored into here
for(auto i : out) std::cout << i << ' ';
}

打印:

2 4

(请注意,此版本假定它可以使用 < 比较元素,并且元素是根据该元素排序的 - 这在您的情况下显然没问题)。

关于C++:如何通过删除多个元素来删除 "set"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43512556/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com