set容器
set作爲一個容器也是用來存儲同一數據類型的數據類型,並且能從一個數據集合中取出數據,在set中每個元素的值都唯一,而且系統能根據元素的值自動排序。
構造set集合的主要目的是爲了快速檢索,使用set前,需要在程序頭文件中包含聲明“#include< set>”
insert()
它不會重複插入相同鍵值的元素,而採取忽略處理。
set容器用 s.insert(temp);進行元素的插入
find()
stl容器set成員函數:find()–返回一個指向被查找到元素的迭代器
if(s.find(i)==s.end()),說明 i 不在set中
另外在買不到的糖果數的題目中也有用到set容器
if(s.find(i)==s.end()){//i不在set中,那麼i就是答案
cout<<i<<endl;
break;//找到後跳出循環
}
遍歷輸出
只要把元素放進set裏面去,用for循環讀取就可以按序讀取
注意:初始化的方法,和輸出的方式
//定義set容器,排序、避免冗餘
set<string>e;
for(set<string>::iterator it=e.begin();it!=e.end();it++)
{
cout<<"it: "<<*it<<endl;
// cout<<*it<<endl;
count()
stl容器set成員函數:count()返回集合中某個值元素的個數,這個有點相當於是find(),因爲set容器的數值是唯一的,查找某個值的個數,只能有0和1兩種情況。
另外,在跳蚱蜢的題目中也有用到set容器
set<string> visited;//已經搜索過的局面
if(visited.count(s)==0)//如果沒有搜索過這個局面
{
visited.insert(s);
}
vector
頭文件“#include< vector>”插入跟查找特定元素不一樣
a.push_back(5); //在a的最後一個向量後插入一個元素,其值爲5
a.pop_back(); //刪除a向量的最後一個元素
a.size(); //返回a中元素的個數;
vector本身是沒有find這一方法,其find是依靠algorithm來實現的。
記着要包含algorithm這一頭文件,其定義了find這一函數。
#include<iostream>
//這個頭文件要寫,拼寫對!!!
#include <algorithm>
#include<vector>
using namespace std;
int main(){
vector<int> v;
v.push_back(1);
v.push_back(2);
// 定義迭代器
vector<int>::iterator it;
it = find(v.begin(),v.end(),12);//Not found
it = find(v.begin(),v.end(),2);// Find
if(it == v.end())
cout<<"Not found"<<endl;
else
cout<<"Find"<<endl;
return 0;
}