STL學習3常用演算法3 8常用集合演算法

2021-09-11 23:04:36 字數 2424 閱讀 5988

1、set_intersection 求兩個集合的交集

2、set_union 求兩個容器的並集

3、set_difference 求兩個集合的差集

4、兩集合必須是有序序列

5、返回結果最後乙個元素的迭代器位置

6、標頭檔案 #include

7、測試程式

#include"pch.h"

#include#include#include#includeusing namespace std;

//set_intersection 求兩個集合的交集

//兩集合必須是有序序列

//返回交集的最後乙個元素的迭代器位置

void test01()

cout << "v1: ";

copy(v1.begin(), v1.end(), ostream_iterator(cout, " "));

cout << endl;

cout << "v2: ";

copy(v2.begin(), v2.end(), ostream_iterator(cout, " "));

cout << endl;

vectorvtarget;

vtarget.resize(min(v1.size(), v2.size()));//兩個容器中取小的開闢size

//求交集

vector::iterator itend = set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), vtarget.begin());

cout << "v1 與 v2 的交集: ";

copy(vtarget.begin(), itend, ostream_iterator(cout, " "));

cout << endl;

}//set_union 求兩個容器的並集

void test02()

cout << "v1: ";

copy(v1.begin(), v1.end(), ostream_iterator(cout, " "));

cout << endl;

cout << "v2: ";

copy(v2.begin(), v2.end(), ostream_iterator(cout, " "));

cout << endl;

vectorvtarget;

vtarget.resize(v1.size() + v2.size());//兩容器元素完全不同時開闢size

//求並集

vector::iterator itend = set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), vtarget.begin());

cout << "v1 與 v2 的並集: ";

copy(vtarget.begin(), itend, ostream_iterator(cout, " "));

cout << endl;

}//set_difference 求兩個集合的差集

//集合必須為有序序列

//返回目標容器最後乙個元素的迭代器位址

void test03()

cout << "v1: ";

copy(v1.begin(), v1.end(), ostream_iterator(cout, " "));

cout << endl;

cout << "v2: ";

copy(v2.begin(), v2.end(), ostream_iterator(cout, " "));

cout << endl;

vectorvtarget;

vtarget.resize(max(v1.size(), v2.size()));//差集最多為兩個集合最大的

//求差集

vector::iterator itend = set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), vtarget.begin());

cout << "v1 與 v2 的差集: ";

copy(vtarget.begin(), itend, ostream_iterator(cout, " "));

cout << endl;

vector::iterator itend1 = set_difference( v2.begin(), v2.end(),v1.begin(), v1.end(), vtarget.begin());

cout << "v2 與 v1 的差集: ";

copy(vtarget.begin(), itend1, ostream_iterator(cout, " "));

cout << endl;

}int main()

STL學習3常用演算法3 4常用查詢演算法

1 find 1.1 按元素查詢 2.2 提供查詢迭代器區間與查詢元素 返回迭代器 2 find if 2.1 按條件查詢 2.2 查詢區間 迭代器 查詢條件 一元謂詞,若為二元需繫結 2.3 返回迭代器 2.4 若為自定義資料型別 需要過載判斷條件 3 count 3.1 按元素統計 3.2 統計...

STL學習3常用演算法3 6常用拷貝替換演算法

1 copy複製 1.1 將容器中指定範圍的元素拷貝到另一容器中 1.2 目標容器要有容量 2 replace按值替換 2.1 將區間內指定的舊元素替換為新元素 3 replace if 按條件替換 3.1 將區間中符合條件的舊元素替換為新元素 4 swap 交換 4.1 交換兩個容器中的所有元素 ...

STL學習3常用演算法3 7常用算數生成演算法

1 標頭檔案 include 2 accumulate 2.1 計算容器元素累計總和 2.2 第三個引數是起始累加的值 3 fill 3.1 填充演算法 4 測試程式 include pch.h include include include accumulate includeusing name...