C++:从container1中查找不在container2中的任何元素

use*_*733 9 c++ algorithm stl std

我有std::set<int>(s)和std::vector<int>(v).保证向量是有序/唯一的.我想知道v的所有元素是否都在s中(或者只是停在v的第一个元素而不是s中).我可以将v转换为set并执行== test,但是有没有更改容器类型的另一种方法?

Edg*_*jān 9

什么是关于std :: includes算法?

这是一个简短的用法示例:

vector<int> v1 { 1, 2, 4, 8 };
vector<int> v2 { 1, 2, 3, 8 };
set<int> s { 0, 1, 2, 4, 8, 16 };
cout << includes(s.begin(), s.end(), v1.begin(), v1.end()) << endl;
cout << includes(s.begin(), s.end(), v2.begin(), v2.end()) << endl;
Run Code Online (Sandbox Code Playgroud)

输出:

1
0
Run Code Online (Sandbox Code Playgroud)