STL中集合的並 交 差 運算

2021-09-26 21:54:30 字數 2655 閱讀 7800

並集運算

總結主要是記錄下來供自己日後參考, 因為一段時間不用就忘了, 所以是按照自己容易理解的方式寫的, 不過任然希望各位可以指出錯誤和欠缺的地方, 共同進步。

// 1

template outputiterator set_union (inputiterator1 first1, inputiterator1 last1,

inputiterator2 first2, inputiterator2 last2,

outputiterator result);

// 2

template outputiterator set_union (inputiterator1 first1, inputiterator1 last1,

inputiterator2 first2, inputiterator2 last2,

outputiterator result, compare comp);

explicit insert_iterator (container& x, typename container::iterator i) : container(&x), iter(i) {}
知道該函式接受兩個引數, 第乙個引數是乙個容器, 第二個引數是乙個迭代器。當然也可以使用下面這種方式獲取迭代器:

auto iter = std::insert(result, std::begin(result));
這個也是參考**上示例的方式。

#include #include #include // for pair<> & make_pair<>()

#include #include #include using std::cout;

using std::endl;

using std::string;

using intset = std::set;

void setunion()

; intset second = ;

cout << "第乙個集合中的元素時:\n";

for (auto it : first) cout << endl;

cout << "第二個集合中的元素時:\n";

for (auto it : second) cout << endl;

intset result;

std::insert_iteratorit(result, result.begin());

std::set_union(first.begin(), first.end(), second.begin(), second.end(), it);

cout << "集合的並集是:" << endl;

for (auto it : result) cout << endl;

}

class people

people() = default;

friend std::ostream& operator<<(std::ostream& out, const people& people);

friend std::istream& operator>>(std::istream& in, people& people); // 方便輸出

// 將名字打包返回, 方便下乙個進行名字的比較函式, 那個函式沒有宣告為友元函式, 所以無法直接訪問該類的私有變數

// 此處切不可返回引用, 只能使用值返回的方式, 否則會報錯

std::pairgetname() const

private:

string m_firstname;

string m_secondname;

}; std::ostream& operator<<(std::ostream& out, const people& people)

std::istream& operator>>(std::istream& in, people& people)

bool operator<(const people& otherpeople) const 

struct peoplecomp

}pcomp;

void settest()

, , };

peopleset second = , , };

peopleset result;

cout << "第乙個集合中的元素是:\n";

for (auto it : first) cout << endl;

cout << "第二個集合中的元素是:\n";

for (auto it : second) cout << endl;

std::insert_iteratorit(result, result.begin());

set_union(first.begin(), first.end(), second.begin(), second.end(), it, pcomp);

cout << "二者的並集是:\n";

for (auto it : result) cout << endl;

}

集合運算 並 交 差運算

已知所給集合 a 和 b,求 a 與 b 的並集 c c a b 已知所給集合 a 和 b,求 a 與 b 的交集 c c a b 已知所給集合 a 和 b,求 a 與 b 的差集 c c a b 離散數學中的簡單的集合運算,由c語言編寫,思路非常簡單,如下 include intinterecti...

jmu ds 集合的並交差運算

7 1 jmu ds 集合的並交差運算 15 分 有兩個整數集合a和b,現在要求實現集合的並 交 差運算。例如a b 則集合的並c a b 而集合的交 c a b 集合的差c a b 集合a和b中元素個數在1 100之間。三行,第一行分別為集合a,b的個數 第二行為a集合的資料 第三行為b集合的資料...

multiset集合容器的集合運算 並 交 差

set和multiset的內部通常是採用平衡二叉樹來實現。當放入元素時,會按照一定的排序方法自動排序,預設是按照less 排序規則來排序。這種自動排序的特性加速了元素查詢的過程,但問題是 不可以直接修改 set或 multiset 容器中的元素值,因為這樣就違反了元素自動排序的規則。如果想修改乙個元...