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...