STL部分用法整理(長期更新)

基礎不牢,地動山搖。

 

map:

提供一對一的hash

  • 第一個可以稱爲關鍵字(key),每個關鍵字只能在map中出現一次;
  • 第二個可能稱爲該關鍵字的值(value);

自動建立key - value的對應。key 和 value可以是任意你需要的類型。

兩種插入方式:

    string s1="hahaha",s2="lalala";

//方法一:使用下標插入
    m[s1] = 1;
    m[s2] = 2;

//方法二:定義鍵值對
    pair<string, int> p1;
    p1 = make_pair(s1, 1);
    pair<string, int> p2(s2, 2);  //直接構造鍵值對
    m.insert(p1);  //使用insert接口
    m.insert(p2);

調用:

    map<string, int>::iterator it;
    for (it = m.begin(); it != m.end(); it++) {  //遍歷
        cout << it->first << " " << it->second << endl;
    }

find(key)      返回一個迭代器

empty()         判斷map是否爲空。爲空的話返回真。

size()             返回map的長度

clear()            清空

map.count(Key)        檢查key是否存在         (返回值爲1或者0,1返回存在,0返回不存在,返回的是布爾類型的值,因爲在map類型中所有的數據的Key值都是不同的,所以被count的數要麼存在1次,要麼不存在)

 

 

 

vecotr:

reserve和resize是vector裏兩個很重要的方法,有效地使用這兩個方法可以減少reallocate memory的次數,提高程序的性能。(這兩個函數的區別即容器的capacity(容量)與size(長度)的區別)

resize: 

  • resize(n)         調整容器的長度大小,使其能容納n個元素。如果n小於容器的當前的size,則刪除多出來的元素。否則,添加採用值初始化的元素。
  • resize(n,t)         多一個參數t,將所有新添加的元素初始化爲t。

reserve:

  • reserve(n)          預分配n個元素的存儲空間。
     

pair 默認對first升序,當first相同時對second升序;

 

set:

排好序且無重複

 

  • insert()                  插入元素
  • begin()        返回set容器第一個元素的迭代器
  • end()                    返回一個指向當前set末尾元素的下一位置的迭代器.
  • clear()         刪除set容器中的所有的元素
  • empty()                判斷set容器是否爲空
  • size()                    返回當前set容器中的元素個數
  • count()                 用來查找set中某個某個鍵值出現的次數
  • find()                   返回給定值值得定位器,如果沒找到則返回end()
  • lower_bound(key_value)     返回第一個大於等於key_value的定位器
  • upper_bound(key_value)     返回最後一個大於等於key_value的定位器

 

string的部分用法:

 https://www.cnblogs.com/lanclot-/p/11142202.html

 

 

 

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