1. 程式人生 > >c++ 常用標準庫

c++ 常用標準庫

struct friend 開始 lac 適用於 repl 函數 數組 常用

vector:

在vc6中,如果要鑲嵌使用vector, 如vector<vector<int> >, 後面的兩個> 應該用,空格隔開, 否則被編譯器認為是移位符

string::npos 的值為-1或者4294967295

string str;

str.find(str2) 返回str2第一次在str中出現的位置, 如果不存在則返回string::npos

str.find(str2, pos) 從str的pos號開始匹配,返回值和上面一樣

str.replace(pos, len, str2) 從str的pos位開始,長度為len的內容替換為str2

str.replace(it, it2, str) 把叠代器[it, it2)範圍的子串替換為石頭人

queue

在調用front()或者pop()函數的時候,先判斷queue是否為空, 否者導致錯誤

如果要基礎類型的數據升序排列,可以這樣聲明 priority_queue<int, vector<int>, greater<int> >; 註意最後兩個符號間的空格

如果要用自己的定義的類型就需要在結構體中定義"<"符號, 只需要定義這個符號, 否者會出錯, 至於是升序排列,還是降序排列,看你自己重寫的<是怎麽樣的了

但是這個和cmp優點不一樣,這裏返回a.x<b.x得到的是降序排列的而不是升序排列的, 即作用和排序中的cmp是相反的;

此外,當數據量的比較大的時候, 簡易形式參數引用傳遞, 減少數據的復制

1 struct node{
2     int x, y;
3     friend operator < (node a, node b){
4         if(a.x!=b.x) return a.x<b.x;
5         return a.y<b.y;
6     }
7 };

浮點數取絕對值要用fabs(); 否則浮點數的小數部分會被截掉;

reverse(it1, it2) 顛倒[it1, it2)之間的內容, 好像stl中的類似的函數都是左閉又開的哈

lower_bound(first, last, key) 適用於遞增序列, 在[first, last)返回第一個大於或者等於key的位置,

upper_bounder(first, last, key) 返回第一個大於key的值

如果是數組返回位置的指針, 如果是叠代器,返回位置的叠代器

c++ 常用標準庫