一.標準C++庫字符串類std::string的用法 #include<string> std::string s1; std::string s3(s2); std::string s2("this is a string"); begin 得到指向字符串開頭的Iterator end 得到指向字符串結尾的Iterator rbegin 得到指向反向字符串開頭的Iterator rend 得到指向反向字符串結尾的Iterator size 得到字符串的大小 length() 和size函數功能相同 max_size 字符串可能的最大大小 capacity 在不重新分配內存的情況下,,字符串可能的大小 empty 判斷是否為空 operator[] 取第幾個元素,,相當于數組 c_str 取得C風格的const char* 字符串 data 取得字符串內容地址 operator= 賦值操作符 reserve 預留空間 swap 交換函數 insert 插入字符 append 追加字符 push_back 追加字符 erase 刪除字符串 clear 清空字符容器中所有內容 resize 重新分配空間 assign 和賦值操作符一樣 replace 替代 copy 字符串到空間 find 查找,返回基于0的索引號 rfind 反向查找 find_first_of 查找包含子串中的任何字符,返回第一個位置 find_first_not_of 查找不包含子串中的任何字符,,返回第一個位置 find_last_of 查找包含子串中的任何字符,,返回最后一個位置 find_last_not_of 查找不包含子串中的任何字符,返回最后一個位置 substr(n1,len) 得到字符串從n1開始的長度為len的子串 比較字符串(支持所有的關系運算符) compare 比較字符串 operator+ 字符串鏈接 operator+= += 操作符 operator== 判斷是否相等 operator!= 判斷是否不等于 operator< 判斷是否小于 operator>> 從輸入流中讀入字符串 operator<< 字符串寫入輸出流 getline 從輸入流中讀入一行 二.向量類模板std::vector成員函數: #include<vector> std::vector<type> name; std::vector<type> name(size); std::vector<type> name(size,value); std::vector<type> name(myvector); std::vector<type> name(first,last); assign(first,last) 用迭代器first,last所指定的元素取代向量元素 assign(num,val) 用val的num份副本取代向量元素 at(n) 等價于[]運算符,,返回向量中位置n的元素 front() 返回向量中第一個元素的引用 back() 返回向量中最后一個元素的引用 begin() 返回向量中第一個元素的迭代器 end() 返回向量中最后一個元素的迭代器 max_size() 返回向量的最大容量(向量所能容納的最多元素個數) capacity() 返回向量當前所能容納的最多元素個數 clear() 刪除向量中所有元素 empty() 如果向量為空,,返回真 erase(start,end) 刪除迭代器start end所指定范圍內的元素 erase(i) 刪除迭代器i所指向的元素 insert(i,x) 把x插入到迭代器i所指定的位置 insert(i,n,x) 把x的n份副本插入到迭代器i所指定的位置 insert(i,start,end) 把迭代器start和end所指定的范圍內的值插入到迭代器i所指定的位置 push_back(x) 把x插入到向量的尾部 pop_back() 刪除向量中最后一個元素 rbegin() 返回一個反向迭代器,該迭代器指向的元素越過了向量中的最后一個元素 rend() 返回一個反向迭代器,,該迭代器指向向量中第一個元素 reverse() 反轉元素順序 resize(n,x) 把向量的大小改為n,新元素的初值賦為x size() 返回向量的大小 swap(vectorref) 交換2個向量的內容 三.雙端隊列類模板std::deque成員函數: #include<deque> std::deque<type> name; std::deque<type> name(size); std::deque<type> name(size,value); std::deque<type> name(mydeque); std::deque<type> name(first,last); 其成員函數大部分和std::vector相同 PS: push_front(x)把x放到雙向隊列的頭部 pop_front() 把雙向隊列的第一個元素刪除 四.鏈表類模板std::list成員函數: #include<list> std::list<type> name; std::list<type> name(size); std::list<type> name(size,value); std::list<type> name(mylist); std::list<type> name(first,last); 其成員函數大部分和std::vector相同 PS: push_front(x)把x放到鏈表頭部 pop_front() 把鏈表第一個元素刪除 merge(listref) 把listref所引用的鏈表中的所有元素插入到鏈表中 remove(val) 從鏈表中刪除所有值為val的元素 remove_if(pred) 刪除鏈表中謂詞pred為真的元素 (謂詞即為元素存儲和檢索的描述,,如std::less<>,std::greater<>那么就按降序/升序排列,,你也可以定義自己的謂詞) sort() 根據默認的謂詞對鏈表排序 sort(pred) 根據給定的謂詞對鏈表排序 unique() 刪除所有重復的元素,,使鏈表中沒有重復元素 unique(pred) 根據謂詞pred刪除所有重復的元素,使鏈表中沒有重復元素 五.容器適配器堆棧類std::stack成員函數: #include<stack> stack實現先進后出的操作 std::stack<type,container> name; type為堆棧操作的數據類型 container為實現堆棧所用的容器類型,,可以為std::vector,std::deque,std::list 例如 std::stack<int,std::list<int>> IntStack; 管理成員函數只有:empty(),size(),top(),push(),pop() 六.容器適配器隊列類std::queue成員函數: #include<queue> queue實現先進先出的操作 std::queue<type,container> name; type為隊列操作的數據類型 container為實現隊列所用的容器類型,,可以為std::vector,std::deque,std::list 管理成員函數只有:empty(),size(),front(),back(),push(),pop() 七.關聯式容器: 集合類std::set, 多重集合類std::multiset, 映射類std::map, 多重映射類std::multimap, 位集合std::bitset 八.通用算法(對以上STL均適用) #include<algorithm> 1.非修正序列算法: 2.修正序列算法: 3.排序算法: 4.數值算法: 九.迭代器(類似指針的功能,對容器的內容進行訪問) #include<iterator> 例如: std::vector<int> IntVector; std::vector<int>::iterator first=IntVector.begin(); //first指向向量第一個元素,,*first即為第一個元素的值 std::vector<int>::iterator last=IntVector.end(); //end指向向量最后一個元素,,*end即為最后一個元素的值 |
|