如何操作c++STL中的set_difference和set_intersection以及set_union,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
STL algorithm的幾個函數,使用的條件是有序容器,所以 vector在被sort了之后是可以使用的,set也是可以使用的。
set_difference 這個是求得在第一個容器中有,第二個容器中沒有的。set_intersection 求兩個容器的交, set_union 求兩個容器的并。
set_symmetric_difference 求兩個容器的差。
最后使用的時候注意要提前分配好最后的盛放容器,其大小最好是兩個操作容器的和,然后需要根據返回的迭代器resize一下,看下面的例子。
// set_symmetric_difference example
#include <iostream> // std::cout
#include <algorithm> // std::set_symmetric_difference, std::sort
#include <vector> // std::vector
int main () {
int first[] = {5,10,15,20,25};
int second[] = {50,40,30,20,10};
std::vector<int> v(10); // 0 0 0 0 0 0 0 0 0 0
std::vector<int>::iterator it;
std::sort (first,first+5); // 5 10 15 20 25
std::sort (second,second+5); // 10 20 30 40 50
it=std::set_symmetric_difference (first, first+5, second, second+5, v.begin());
// 5 15 25 30 40 50 0 0 0 0
v.resize(it-v.begin()); // 5 15 25 30 40 50
std::cout << "The symmetric difference has " << (v.size()) << " elements:\n";
for (it=v.begin(); it!=v.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n';
return 0;
}看完上述內容,你們掌握如何操作c++STL中的set_difference和set_intersection以及set_union的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。