" 其實真正能擊垮你的,
往往不是那些突如其來的滅頂之災,
而是壓在你心底
那些看似不值一提,日積月累的心事,
在某一瞬間,使你徹底崩潰,成為壓垮你的最後一根稻草。"
這幾天,突然一下子想明白了
隨波逐流不是我的風格,我需要堅持一些東西,需要做一些不一樣的東西,即使是在無限的**裡~
很難,真的很難,
加油!map和set一樣是關聯式容器,它們的底層容器都是紅黑樹,區別就在於map的值不作為鍵,鍵和值是分開的。它的特性如下:
mapm;
set是一種關聯式容器,其特性如下:
sets;
∴:map和set的共同點在於:都是有序的無重複的key值,而且底層都是基於r-b tree。
說明:pair是乙個結構體型別,裡面的兩個成員變數的型別可以通過模板給定;換句話說,pair是一種k-v資料型別,可以定義此型別的變數
例:mapm;
pairv(string("zhangheng",2));
m.insert(v);
//構造乙個int型別的set
sets;
//插入幾個元素
s.insert(1);
s.insert(2);
s.insert(6);
//測試insert()的返回值
pair::iterator, bool> ret;
ret = s.insert(4);//set中還沒有4這個元素,插入成功,返回插入節點的迭代器和true
ret = s.insert(4);//set中已經存在了4,插入失敗,返回的是元素4的迭代器和false
常用的容器操作:插入、刪除、儲存、遍歷、查詢、排序
c++中的stl之所以牛b,是因為stl封裝了許多複雜的資料結構和演算法,以及大量常用的資料結構操作。vector封裝了資料,list封裝了鍊錶,map和set封裝了二叉樹。
接下來,分別舉例來研究map和set的用法:
mapm;
m["messi"] = 1;
m["jams"] = 2;
m["jack"] = 3;
//插入操作
pairvalue("json", 4);
m.insert(value);
//輸出集合中的元素(遍歷map中的元素)
for(map::iterator iter = m.begin(); iter != m.end(); iter ++)
for (i=1;i< int_max && count< index;i++)
}cout << i-1 << endl;
}//遍曆法找醜數
bool isugly(int num)//判斷是否是
while (num %3 == 0)
while (num %5 == 0)
if (num == 1)
return true;
else
return false;//not an ugly number
}};*/
//法二:建議此種方法,所有的醜數都是有現有醜數乘以2,3,5得到的
class solution
vectorv(index);
v[0]=1;
vector::iterator it2=v.begin();
vector::iterator it3=v.begin();
vector::iterator it5=v.begin();
int count=1;
while(counts;
set::iterator it;
s.insert(1);
for (i=1 ; i> number ;
solution so;
int result=so.getuglynumber_solution(number);
cout好嘞!
STL之關聯式容器
sets 沒有重疊的數字,沒有權利指定新元素的位置 set typedef std set obj obj col col.insert 3 col.insert 1 col.insert 5 col.insert 4 col.insert 1 col.insert 6 col.insert 2 f...
STL關聯式容器(二)
前面我們總結了map的用法,具體參考如下 stl關聯式容器 一 接下來我們看看multimap multimap是關聯式容器,它按照特定的順序,儲存由key和value對映成的鍵值對,其中多個鍵值對之間的key是可以重複的。multimap在底層用二叉搜尋樹 紅黑樹 來實現。multimap和map...
STL之關聯式容器
在接觸容器初,我們學習了stl中的部分容器,如 vector,list,deque 等,這些容器統一稱為序列式容器。因為其底層為線性序列的的資料結構,裡面儲存的是元素本身。關聯式容器就有所不同 關聯式容器也是用來儲存與序列式容器不同的是,裡面儲存的是結構的鍵值對,在資料檢索時比序列式容器效率更高。用...