標準c++中string類及stl容器類簡介
#include
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 插入字元
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
getline 從輸入流中讀入一行
二.向量類模板std::vector成員函式:
#include
std::vector name;
std::vector name(size);
std::vector name(size,value);
std::vector name(myvector);
std::vector 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
std::deque name;
std::deque name(size);
std::deque name(size,value);
std::deque name(mydeque);
std::deque name(first,last);
其成員函式大部分和std::vector相同
ps:push_front(x)把x放到雙向佇列的頭部
pop_front() 把雙向佇列的第乙個元素刪除
四.鍊錶類模板std::list成員函式:
#include
std::list name;
std::list name(size);
std::list name(size,value);
std::list name(mylist);
std::list 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刪除所有重複的元素,使煉表中沒有重複元素
注意:vector和deque支援隨機訪問,而list不支援隨機訪問,因此不支援訪問!
五.容器介面卡堆疊類std::stack成員函式:
#include
stack實現先進後出的操作
std::stack name;
type為堆疊操作的資料型別
container為實現堆疊所用的容器型別,可以為std::vector,std::deque,std::list
例如std::stack intstack;
管理成員函式只有:empty(),size(),top(),push(),pop()
六.容器介面卡佇列類std::queue成員函式:
#include
queue實現先進先出的操作
std::queue 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
1.非修正序列演算法:
2.修正序列演算法:
3.排序演算法:
4.數值演算法:
九.迭代器(類似指標的功能,對容器的內容進行訪問)
#include
例如:std::vector intvector;
std::vector::iterator first=intvector.begin();
//begin()得到指向vector開頭的iterator,*first得到開頭乙個元素的值
std::vector::iterator last=intvector.end();
//end()得到指向vector結尾的iterator,*last得到最後乙個元素的值
C 標準庫 (string 類)
一 成員函式 二 非成員有關的全域性函式 三 例項 感謝閱讀!其中的string是以char作為模板引數的模板類例項,把字串的記憶體管理責任由string負責而不是由程式設計者負責,大大減輕了c語言風格的字串的麻煩 std basic string提供了大量的字串操作函式,如比較 連線 搜尋 替換 ...
C 標準模板庫(STL介紹) string
string str1 ab str2 xy string str str1 str2 比較規則是字典序 方法一 string str abcxyz str2 opq str.insert 3 str2 輸出 abcopqxyz 方法二 string str abcxyz str2 opq str....
C 標準模板庫(STL)之 string
在c語言中,一般使用字元陣列char str來存放字串,但是使用字元陣列有時會顯得麻煩,c 在stl中加入了string型別,對字串常用的需求功能進行了封裝,使得操作起來更方便,且不易出錯。如果需要使用string 需要新增string標頭檔案,即 include 注 string.h和string...