1. 程式人生 > 其它 >C++STL常用操作之set篇

C++STL常用操作之set篇

技術標籤:涉及二叉樹快速學習STLmapstl

C++STL常用操作之set篇


簡介:

#include<set>

1.元素唯一

2.排序

set也是c++中經常用到的容器,set是集合。set是集合,那麼當然它內部的元素就是唯一的(集合的不重複性)。並且set中的元素還是已經排好序的,set和map一樣,都是以紅黑樹為基礎的資料結構。

1.構造

set<int> s;
s.insert(3);
s.insert(2);
s.insert(4);
s.insert(1);
s.insert(1);
s.insert(1);
for (auto it = s.
begin(); it != s.end(); ++it) cout << *it << endl;

在這裡插入圖片描述

我們可以看出,在構造的集合s當中一依次插入int型資料3、2、4、1、1、1後遍歷輸出的結果為1、2、3、4。這也說明了set確實是不允許重複元素,並且是排序好的。

2.常用函式

set<int> s;
s.insert(3);
s.insert(2);
s.insert(4);
s.insert(1);
cout << *s.begin() << endl;				//返回set的第一個元素的迭代器
cout << *
(--s.end()) << endl; //返回set最後一個元素後面一個位置的迭代器 if (s.empty()) //判斷set是否為空 cout << "is empty" << endl; else cout << "is not empty" << endl; cout << s.size() << endl; //輸出set此時的元素個數 s.clear(); //清空,刪除所有元素 cout << s.size() <<
endl;

執行結果:

在這裡插入圖片描述


set<int> s;
s.insert(3);
s.insert(1);
s.insert(1);
cout << s.count(1) << endl;
cout << s.count(2) << endl;

在這裡插入圖片描述

count用來計數某個key值出現過的次數,由於set和map一樣,都是不允許重複資料的出現,所以count的返回值只能是0或1(集合中存在或者不存在)。


set<int> s;
s.insert(3);
s.insert(2);
auto it = s.find(1);
if (it != s.end())
	cout << "YES" << endl;
else
	cout << "NO" << endl;
it = s.find(3);
if (it != s.end())
	cout << "YES" << endl;
else
	cout << "NO" << endl;

在這裡插入圖片描述

find函式返回需要查詢元素的迭代器,如果沒有則返回end()。

3.刪除

#include<iostream>
#include<set>
using namespace std;
int main() {
	set<int> s;
	s.insert(3);
	s.insert(2);
	s.insert(4);
	s.insert(1);
	s.insert(1);
	for (auto it = s.begin(); it != s.end(); ++it)
		cout << *it << endl;
	cout << "**********" << endl;

	s.erase(1);						//給定key值的刪除
	for (auto it = s.begin(); it != s.end(); ++it)
		cout << *it << endl;
	cout << "**********" << endl;

	s.erase(s.begin());				//給定迭代器的刪除
	for (auto it = s.begin(); it != s.end(); ++it)
		cout << *it << endl;
	cout << "**********" << endl;
	
	s.erase(s.begin(), s.end());	//給定迭代器返回的刪除
	for (auto it = s.begin(); it != s.end(); ++it)
		cout << *it << endl;
	cout << "**********" << endl;
	return 0;
}

在這裡插入圖片描述

最初我們set中的元素為1、2、3、4,刪除了給定得key為1的元素後,set中元素還剩下2、3、4,刪除了給定的迭代器set的第一個位置對應的元素(2)後,還剩下3、4,刪除了給定迭代器範圍(從頭到尾)的元素後,set中不再有元素。


set常用操作

發現問題歡迎指正!