STL入門級整理(map set)

2021-09-02 14:11:33 字數 1473 閱讀 3570

在高中裡我們都學過函式的對映,大概都慢慢還給老師了。

map大概講的就是對映關係。它所在的庫為#include,利用他能快速hash我們的資料。(啊我是這麼理解的啦)。

在之前我們使用陣列,比如a[12]=1;

這其實就是一種對映關係,先不管位址不位址的問題,我們是不是可以理解為在12的位置對應的是1。

a[15]=2;在15的位置對應的就是2。

a[202]=3;在202的位置對應的就是3。

那麼map可以先理解為這種對映關係的加強版本,(至於具體是怎麼進行對映的,大家自學一下?)大概用的多了理解就深刻了吧?直接講怎麼用。我們可以直接結合之前介紹過的string來實踐。

#include#include#include#includeusing namespace std;

int main()

看上面的**,mapmp;  表示我們宣告了乙個將string型別對映為int型別的map模板,並且命名為mp;

而查詢操作其實也是和陣列一樣的,比如我們輸入了乙個string,那麼我們就直接把這個string當成下標去訪問mp[s]就好,還是直接看**吧:

#include#include#include#includeusing namespace std;

int main()

簡單粗暴,實際上和之前介紹過的vector差不多吧。

再來看如何往乙個set中新增元素,呼叫.insert()

#include#include#includeusing namespace std;

int main()

很好理解吧,在上面的例子中,因為集合元素的唯一性,所以理論上插入了兩個王五,應該只會被記錄為乙個。

這時我們呼叫.size()  可以檢視set中元素的個數

cout《那果然是三個啦。

和上面講到的一樣,set的遍歷也是需要迭代器的參與,甚至**都幾乎一樣,但是因為這裡沒有兩個鍵所以遍歷應該這樣來

#include#include#includeusing namespace std;

int main()

{ sets;

string name;

name="zhangsan";

s.insert(name);

name="lisi";

s.insert(name);

name="wangwu";

s.insert(name);

name="wangwu";

s.insert(name);

for(set::iterator it=s.begin();it!=s.end();it++)

{cout<<*it《可以觀察到,我們輸出了這三個名字後,他們是按照字典序排序好的,這是因為set的性質,會按照鍵值的價值從小到大自動排序好。這一點應該是經常被用到的。建議自學刪除操作。

STL入門級整理(string vector)

我們在c語言中是如何定義乙個字串的呢?最簡單的就是char s 100 這樣。然後讀入和輸出就是 scanf s s printf s s 現在,c 提供了乙個string型別的模板,它的用處從英文的字面意思就可以了解,就是字串型別。這個模板存在於標頭檔案 include中 我們如何去用它呢?可以將...

入門級演算法

今天我想記錄的是一些關於入門級別的演算法。將乙個字串s對映為乙個整數,使得該整數可以唯一的代表字串s。先假設字串均由大寫字母a z構成,不妨設a z為0 25,即將26個大寫字母對應到了二十六進製制中。按照將二十六進製制轉換為十進位制的思路,即可實現將字串對映為整數的需求。題目 給出n個字串 恰好由...

PKI入門級介紹

隨著電子商務的迅速發展,資訊保安已成為焦點問題之一,尤其是網上支付和網路銀行對資訊保安的要求顯得更為突出。為了能在網際網路上開展安全的電子商務活動,公開金鑰基礎設施 pki,public key infrastructure 逐步在國內外得到廣泛應用。我們是否真的需要 pki pki 究竟有什麼用?...