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

2021-09-08 16:58:16 字數 1474 閱讀 5939

set和multiset的內部通常是採用平衡二叉樹來實現。當放入元素時,會按照一定的排序方法自動排序,預設是按照less<>排序規則來排序。這種自動排序的特性加速了元素查詢的過程,但問題是:不可以直接修改

set或

multiset

容器中的元素值,因為這樣就違反了元素自動排序的規則。如果想修改乙個元素的值,則必須先刪除原有的元素,再插入新的元素。

multiset容器的集合並、交、差運算(注意:並集運算的結果)

#include

"stdafx.h"

#include

#include

#include

using

namespace std;

int_tmain(int argc, _tchar* ar**)

const

int n=10;

int a[n] = ;

int b[n] = ;

multiset a(a,a+n);

multiset b(b,b+n);

multiset c,d;

cout<

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

cout

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

cout

set_union(a.begin(),a.end(),b.begin(),b.end(),ostream_iterator(cout,""));

cout

set_union(b.begin(),b.end(),a.begin(),a.end(),ostream_iterator(cout,""));

cout

set_intersection(a.begin(),a.end(),b.begin(),b.end(),ostream_iterator(cout,""));

cout

set_intersection(b.begin(),b.end(),a.begin(),a.end(),ostream_iterator(cout,""));

cout

cout<

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

cout

cout<

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

cout<

return 0;

執行結果:

注意並集:最終結果中的相同元素的個數取集合中最多的數目,如此處求並集時0的個數取的是集合a的個數,為兩個;5的個數取的是b中的數目,為兩個。

因此,兩個集合的並、交滿**換率,而差則不滿**換律,符合數學原理。

multiset多重集合容器

include include multiset標頭檔案 include using namespace std 允許重複的元素值插入 前序遍歷 根左右 中序遍歷 左根右 後序遍歷 左右根 int main cout endl multiset元素的刪除 刪除值為123的所有重複元素並返回刪除元素總...

multiset多重集合容器(常用的使用方法總結)

關於c stl中multiset集合容器的學習,看別人的 一百遍,不如自己動手寫一遍。multiset多重集合容器和set集合容器的使用方法大多相同,不同的是multiset多重集合容器允許重複的元素鍵值插入。1 include 2 include 3 include 4 using namespa...

字典 容器 集合

常用方法 nsmutablearray 陣列 addobject count removeobjectatindex nsmutabledictionary 字典 objectforkey setobject forkey removeobjectforkey 字典單詞 entry 實體 鍵值對 c...