C++多重集合類模板

C++多重集合類模板

multiset(多重集合)使程序存儲一組數據。與list集合類相似,多重集合的元素既可以作爲存儲的數據又可以作爲數據的關鍵碼,然而,與集合類不同的是多重集合類可以包含重複的數據。

關於set集合類模板的學習————》》C++集合類模板

創建multiset多重集合類模板的方法:

#include<set>		//調用set頭文件
	...
	...
multiset<type>m;			//定義一個multiset
//multiset表示聲明一個多重集合類模板,<type>表示集合的類型,m表示集合名。

multiset對象主要成員函數說明:

只是一些常用的,其它還有很多。

函數 說明
begin 返回指向集合第一個元素的迭代器
end 返回指向集合最後一個元素的迭代器
size 返回集合的大小
clear 刪除集合中所有元素
count(x) 返回集合中值爲x的元素個數
find(x) 返回一個指向x的迭代器,若x不存在,則返回end
erase(start,end) 刪除迭代器從start到end範圍內的向量
erase(i) 刪除迭代器第i個元素
insert(i,x) 把值x插入到由迭代器指明的第i個位置
insert(i,start,end) 把迭代器從start到end範圍的元素插入到指明的第i個位置
insert(i,n,x) 把x的n個副本插入到由迭代器指明的第i個位置
swap(set) 交換兩個集合的內容

值得注意的是,集合無法通過索引進行賦值和輸入輸出。

迭代器

對multiset集合的各個元素的訪問,通常使用迭代器。

迭代器定義方法:

multiset<int>::iterator it=m.begin();

定義了一個迭代器it指向multiset集合m的開始指針。

multiset集合與迭代器的入門應用

插入操作

	multiset<int>m;
	m.insert(1);m.insert(3);m.insert(5);
	m.insert(7);m.insert(9);m.insert(11);
	multiset<int>::iterator it;
	for(it=m.begin();it!=m.end();it++)
		cout<<*it<<" ";

給大家做一下解釋,
先是定義一個int類型的multiset集合m,重複插入操作6次。
定義一個迭代器it,it=m.begin()初始化指向m的頭指針。
然後通過it++遍歷輸出m的所有元素。
輸出結果爲:1 3 5 7 9 11

需要注意的是,for循環終止條件爲it!=m.end(),當it=m.end()時,it指向的是m的最後元素的下一個空元素,而非最後元素

刪除操作

承接插入操作繼續運行

	m.erase(--it); 
	for(it=m.begin();it!=m.end();it++)
		cout<<*it<<" ";

通過m.erase(- -it); 刪除m最後一個元素,
輸出結果爲:1 3 5 7 9

查找操作

重新回顧一下查找操作find:
find(x) 返回一個指向x的迭代器,若x不存在,則返回end。

承接以上的插入刪除操作:

	it=m.find(5);
	if(it!=m.end())
		cout<<"found"<<endl;
	else
		cout<<"not found"<<endl;
	it=m.find(13);
	if(it!=m.end())
		cout<<"found"<<endl;
	else
		cout<<"not found"<<endl;

輸出結果爲:
found
not found

三合一源代碼

#include<iostream>
#include<set>
using namespace std; 
int main(){
	
	multiset<int>m;
	m.insert(1);m.insert(3);m.insert(5);
	m.insert(7);m.insert(9);m.insert(11);
	multiset<int>::iterator it;
	for(it=m.begin();it!=m.end();it++)
		cout<<*it<<" ";
	cout<<endl;
	
	m.erase(--it); 
	for(it=m.begin();it!=m.end();it++)
		cout<<*it<<" ";
	cout<<endl;
	
	it=m.find(5);
	if(it!=m.end())
		cout<<"found"<<endl;
	else
		cout<<"not found"<<endl;
	it=m.find(13);
	if(it!=m.end())
		cout<<"found"<<endl;
	else
		cout<<"not found"<<endl;
}

結果圖:
multiset

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章