您好,登錄后才能下訂單哦!
如何操作c++STL中的set_difference和set_intersection以及set_union,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
STL algorithm的幾個函數(shù),使用的條件是有序容器,所以 vector在被sort了之后是可以使用的,set也是可以使用的。
set_difference 這個是求得在第一個容器中有,第二個容器中沒有的。set_intersection 求兩個容器的交, set_union 求兩個容器的并。
set_symmetric_difference 求兩個容器的差。
最后使用的時候注意要提前分配好最后的盛放容器,其大小最好是兩個操作容器的和,然后需要根據(jù)返回的迭代器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的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。