版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、STL 整理使用STL 的時(shí)候需要注意的一點(diǎn)是, STL 的區(qū)間都是右開的.例如:start, end) 表示從start 開始到end 之前一個(gè)位置1. stack頭文件: #include實(shí)例化: stackStackNamenamespatd template class T, class Containerclass stack;=deque成員函數(shù):2. queue頭文件: #include實(shí)例化: queueQueueNamenamespatd template class T, class Containerclass queue;=deque成員函數(shù):3. Priority Q
2、ueues類似隊(duì)列,但是在這個(gè)數(shù)據(jù)結(jié)構(gòu)中的元素默認(rèn)使用小于號(hào)(std:less)進(jìn)行部分排序,使得每次出棧的元素都是最小(優(yōu)先級(jí)最高的)元素??梢允褂闷渌谋容^方式。頭文件: #include實(shí)例化: priority_queuePriorityQueueNamebool empty();隊(duì)列為空返回 true 否則返回 false.void pop();刪除隊(duì)列的一個(gè)元素。void push( const TYPE &val );將 val 元素加入隊(duì)列。size_type size();返當(dāng)前隊(duì)列中的元素?cái)?shù)目TYPE &back();返回一個(gè),指向隊(duì)列的最后一個(gè)元素。TYPE &front
3、();返回隊(duì)列第一個(gè)元素的。bool empty();棧為空返回 true 否則返回 false.void pop();移除堆棧中最頂層元素。void push( const TYPE &val );將 val 值壓棧,使其成為棧頂?shù)牡谝粋€(gè)元素size_type size();返當(dāng)前堆棧中的元素?cái)?shù)目TYPE &top();返回對(duì)棧頂元素的原型:namespatd template class T, class Container = vector,class Compare = less class priority_queue;成員函數(shù):默認(rèn)的比較方式是使用小于號(hào)運(yùn)算符()進(jìn)行比較,如果是系
4、統(tǒng)提供的能夠使用小于號(hào)比較的元素類型就可以只寫元素類型;如果想用系統(tǒng)提供的大于號(hào)進(jìn)行比較,則還需要給出容器和比較謂詞;如果使用自定義的 struct/class, 則需要重載小于號(hào)運(yùn)算符。舉 3 例:priority_queue minQ;/注意 v 下面的空格:vpriority_queuefloat, vector, greater maxFloatQ; struct nodei;bool operator(const node &a)constreturn (i a.i);priority_queue minNodeQ;以上三個(gè)優(yōu)先隊(duì)列出隊(duì)的元素分別是最小的整數(shù)、最大的浮點(diǎn)數(shù)、成員 i
5、最小的 node。4. Bitset顧名思義就是一種位集合的數(shù)據(jù)結(jié)構(gòu)。Bitsets 使用許多二元操作符,比如邏輯和,或等 。頭文件:實(shí)例化:#includebitsetbs; /容納bits 位,不設(shè)置初值(全零) bitsetbs(unsigned long &value); /用 unsigned long 初始化bitsetbs(const string &str); /用string 來初始化原型:namespatd template class bitset;成員函數(shù):構(gòu)造函數(shù):bitset();bitset( unsigned long val );以無參的形式創(chuàng)建 bitset
6、,或把一個(gè)長(zhǎng)無符號(hào)整數(shù)轉(zhuǎn)為二進(jìn)制到 bitset 中。模板中提供的數(shù)字決定 bitset 有多長(zhǎng)。bool empty();優(yōu)先隊(duì)列為空返回 true 否則返回 false.void pop();刪除優(yōu)先隊(duì)列中的第一個(gè)元素。void push( const TYPE &val );添加一個(gè)元素到優(yōu)先隊(duì)列中,值為 val。size_type size();返當(dāng)前隊(duì)列中的元素?cái)?shù)目TYPE &top ();返回一個(gè),指向最高優(yōu)先級(jí)的元素。操作符的使用:bitset:reference bitset:operator (size_t idx)bool bitset:operator (size_t i
7、dx) const第一種形式返回的是對(duì)在 idx 位置的那個(gè)位的,所以可以把它當(dāng)作進(jìn)行修改。第二種類型返回的是 bool 類型,輸出前需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換。istream& operator (istream& strm, bitset& bits)盡可能多地讀入包含 0,1 的字符串,如果長(zhǎng)度小于bitset 的長(zhǎng)度, 使用前導(dǎo) 0 填充5. list頭文件: #include實(shí)例化: listListName原型:namespatd template class T, class Allocator = allocator class list;成員函數(shù):構(gòu)造函數(shù)(使得可以在定義時(shí)賦初值)
8、list ();list (size_type n, const TYPE &v) list (const list &from)list(input_iteratorstart,input_iterator end)無初值給出n 個(gè)初值由另一個(gè)list 初始化由start, end) 區(qū)間內(nèi)的值初始化void assign(input_iterator start, input_iterator end);void assign(si ze_type num, constTYPE &val);清空鏈表,區(qū)間start, end) 的內(nèi)容到list 中清空鏈表,num 個(gè)值為 val 的元素T
9、YPE &back()返回對(duì)最后一個(gè)元素的操作符!=, =, &=, =, |=, , =, 不等,相等,與,異或,或,非,右移(和普通位運(yùn)算一樣),取某一位(像數(shù)組)bool any();如果有位被置 1 返回 true,否則返回 falsesize_type count();返回被設(shè)置成 1 的位的個(gè)數(shù)。bitset &flip();bitset &flip( size_t);反轉(zhuǎn) bitset 中所有的位反轉(zhuǎn)上的位(是unsigned long)bool none();如果沒有位被置 1 返回 true,否則 falsebitset &reset();bitset &reset( siz
10、e_t);置零 bitset 中所有的位置零上的位(是unsigned long)bitset &set();bitset &set(size_t,val=1);置 1 bitset 中所有的位置 1上的位(是 unsigned long)bool test( size_t);如果指定位為 1 返回 true,否則 falsestring to_string();轉(zhuǎn)換成 string 返回以便輸出,可直接 coutunsigned long to_ulong();轉(zhuǎn)換成 unsigned long 返回.TYPE &front()返回對(duì)第一個(gè)元素的iterator begin()返回指向第一個(gè)
11、元素的迭代器iterator end()返回指向鏈表末尾(最后一個(gè)元后的那個(gè)位置)的迭代器void clear()清空鏈表bool empty()如果鏈表為空返回 true, 否則返回 falseiterator erase(iterator);iterator erase(iterator start, iterator end);刪除所指元素并返回下一元素迭代器刪除start, end) 之間的元素,并返回最后一個(gè)被刪除元素的下個(gè)元素的迭代器iterator insert( iterator,一個(gè)值為 value 的元素在位置并const TYPE &val );void insert(
12、iterator , size_type num, const TYPE &val); void insert( iterator, input_iterator start,input_iterator end );返回其迭代器,原及以后的元素后移。num 個(gè)值為 value 的元素在位置,原及以后元素后移。start, end) 之間的元素到位置,原及以后元素后移void merge(list &lst ); void merge(list &lst, bool Cmpfunc)/ bool Cmpfunc(Type &a, Type &b)將鏈表 lst 有序地合并到原鏈表中,默認(rèn)使用小
13、于號(hào)進(jìn)行比較 , 可指定比較函數(shù) Cmpfunc, 對(duì)兩個(gè) TYPE 類型元素進(jìn)行比較void pop_back();刪除鏈表的最后一個(gè)元素。void pop_front();刪除鏈表的第一個(gè)元素。void push_back( const TYPE &val );將val 連接到鏈表的最后。void push_front( const TYPE &val);將val 連接到鏈表的頭部。void remove( const TYPE &val );刪除鏈表中所有值為val 的元素。void remove_if( bool testfunc)/ bool testfunc(TYPE &val)用
14、testfunc 一元函數(shù)來判斷是否刪除元素如果testfunc 返回 true 則刪除該元素。size_type size()返回list 中元素的數(shù)量。void resi ze ( size_t ype n, TYPE val = 0)將鏈表大小重置為 n, 若 n size() 只保留前面n 個(gè)元素,否則最后 size() - n 個(gè)元素置為value( 如果不給出,默認(rèn)為 0)void reverse();將鏈表所有元素倒轉(zhuǎn)。void sort();void sort(Comp compfunc);提供nlog 2n 的排序效率,默認(rèn)使用小于號(hào)排序,可以自己指定排序函數(shù)。void sp
15、lice( iterator, list &lst )void splice( iterator, list &lst, iterator del );void splice(iterator, list&lst, iterator start, iterator end)將 lst 鏈表到這個(gè)鏈表的位置(及其后元素后移)將 lst 鏈表中 del 所指元素到這個(gè)鏈表的位置將lst 鏈表中start, end) 之間的元素到這個(gè)鏈表的位置void swap( list &lst );交換兩個(gè)鏈表中的元素void unique();去除鏈表中重復(fù)元素(離散化)。6. vector頭文件: #in
16、clude實(shí)例化: vectorVectorName原型:namespatd template class T, class Allocator = allocator class vector;成員函數(shù):構(gòu)造函數(shù)(使得可以在定義時(shí)賦初值)vector();vector(si ze_type n, const TYPE &v) vector(const vector &from)vector ( input_iterator start,input_iterator end)無初值給出n 個(gè)初值由另一個(gè)vector 初始化由start, end) 區(qū)間內(nèi)的值初始化運(yùn)算符, 包括=, !=, =
17、, , 運(yùn)算符使vector 可以像數(shù)組一樣操作void assign(input_iterator start, input_iterator end);void assign(si ze_type num, constTYPE &val);清空 vector ,區(qū)間start, end)的內(nèi)容到list 中清空 vector,num 個(gè)值為val 的元素TYPE at(si ze_type loc)返回在loc 位置元素的值的,有TYPE &back()返回對(duì)最后一個(gè)元素的TYPE &front()返回對(duì)第一個(gè)元素的iterator begin()返回指向第一個(gè)元素的迭代器iterator
18、 end()返回指向 vector 末尾(最后一個(gè)元后的那個(gè)位置)的迭代器void clear()清空vector (未回收空間!)bool empty()如果為空返回 true, 否則返回 falseiterator erase(iterator loc);iterator erase(iterator start, iterator end);刪除loc 所指元素并返回下一元素迭代器刪除start, end) 之間的元素,并返回最后一個(gè)被刪除元素的下個(gè)元素的迭代器iterator insert( iterator loc,const TYPE &val );void insert( ite
19、rator loc, size_type num, const TYPE &val); void insert( iterator loc, input_iterator start,input_iterator end );一個(gè)值為 value 的元素在 loc 位置并返回其迭代器,原loc 及以后的元素后移。num 個(gè)值為 value 的元素在 loc 位置,原loc 及以后元素后移。start, end) 之間的元素到loc 位置,原loc 及以后元素后移reverse_iterator rbegin();返回一個(gè)逆向迭代器,指向鏈表的末尾reverse_iterator rend();
20、返回一個(gè)指向開頭之前位置的逆向迭代器對(duì) vector 進(jìn) 行 排 序 可 以 使 用 STL 的 sort,stable_sort,partition,partial_sort, nth_element, 可以用 STL 的unique 算法對(duì)其進(jìn)行排重,但是一定要這么寫:vt.erase(unique(vt.begin(), vt.end(), vt.end();使用 STL 的 remove 或remove_if 算法刪除指定元素:vt.erase(remove(vt.begin(), vt.end(), Type &value), vt.end();vt.erase(remove_if(
21、vt.begin(), vt.end(), testfunc), vt.end();回收 vector 占用的空間:vector(vt).swap(vt); /回收vt 中多余元素占用的空間vector().swap(vt); /回收vt 占用的所有空間也就是創(chuàng)建一個(gè)的空的vector類型變量(前一句還執(zhí)行了用vt 對(duì)其初始化)并與 vt 交換,然后這個(gè)變量在這條語(yǔ)句結(jié)束時(shí)被自動(dòng)。7. map 和 multimap樹實(shí)現(xiàn)的關(guān)聯(lián)式容器,包含“關(guān)鍵字/值”對(duì),在時(shí)默認(rèn)使用小于號(hào)進(jìn)行比較,在對(duì)數(shù)時(shí)間內(nèi)到相應(yīng)位置??梢灾付ū容^謂詞(使用 std 中的 less/greater 或仿函數(shù))。Map 中保
22、存的元素的鍵值是唯一的,而multimap 可以有鍵值重復(fù)的元素存在。頭文件: #include原型:namespatd template class Key, class T, class Compare = less, class Allocator = allocatorpair class map;template class Key, class T, class Compare = less, class Allocator = allocatorpair class multimap;這里解釋一下“關(guān)鍵字/值”對(duì): 在std 里面定義的一個(gè)結(jié)構(gòu)體,有兩個(gè)不同類型的成員,原型如下:
23、和 secondnamespatdtemplate ;struct pairvoid pop_back();刪除vector 的最后一個(gè)元素。void push_back( const TYPE &val );將val 放置到 vector 的最后。void reserve(si ze_type size)預(yù)留至少共容納 size 個(gè)元素的空間size_type size()返回list 中元素的數(shù)量。void resi ze ( size_t ype n, TYPE val = 0)將 vector 大小重置為 n, 若 n size()只保留前面n 個(gè)元素,否則最后size() - n個(gè)元
24、素置為value( 如果不給出,默認(rèn)為 0)void swap( vector &from );交換兩個(gè)鏈表中的元素reverse_iterator rbegin();返回一個(gè)逆向迭代器,指向鏈表的末尾reverse_iterator rend();返回一個(gè)指向開頭之前位置的逆向迭代器T1;T2 second; /other functions由于pair 是個(gè)結(jié)構(gòu)體,而map/multimap 里面存放的是pair, 所以對(duì)于這兩個(gè)容器中的元素,需要使用 element.和 element.second 來其中的值。在的,時(shí)候可以使用 pair(key, value) 產(chǎn)生一個(gè)臨時(shí)變量來或者
25、使用 make_pair(key, value)來產(chǎn)生,但是要嚴(yán)格注意 key 和 value 的類型,比如make_pair(1, 0)是不等于 make_pair(1, 0.0) 的。實(shí)例化(map): mapMapName;實(shí)例化(multimap): multimapMulti MapName;map 成員函數(shù):構(gòu)造函數(shù)(使得可以在定義時(shí)賦初值)map();map(const map &from)map(input_iteratorstart, input_iterator end)對(duì)應(yīng) multimap 也有這三個(gè)構(gòu)造函數(shù)無初值由另一個(gè)map 初始化由start, end) 區(qū)間內(nèi)的
26、值初始化運(yùn)算符, 包括=, !=, =, , 運(yùn)算 符 使 map 可像 數(shù) 組 一 樣 操 作(multimap 不行,因?yàn)榭梢杂兄貜?fù)元素)iterator begin()返回指向第一個(gè)元素的迭代器iterator end()返回指向末尾(最后一個(gè)元后的那個(gè)位置)的迭代器void clear()清空容器。bool empty()如果為空返回 true, 否則返回 falseinsert( pair &val );(上面的 insert 對(duì)multimap 無返回值)iterator insert( iterator loc, pair &val ); void insert(input_it
27、erator start, input_iterator end );一個(gè) pair 類型的元素, 對(duì) map 返回一個(gè) pair,其 是指向 元素的迭代器,second 表示是否 成功從loc 開始尋找一個(gè)可以 值為 value的元素的位置將其 并返回其迭代器start, end) 之間的元素到容器中void erase(iterator loc) void erase(iterator start, iterator end)size _type erase(const key_type &key)刪除loc 所指元素刪除start, end) 之間的元素刪除 key 值為value 的元
28、素并返回被刪除元素的個(gè)數(shù)pair equal_range(const key_type&key)查找鍵值等于 key 的元素區(qū)間為start, end),指示范圍的兩個(gè)迭代器以pair 返回iterator find(const key_type &key)返回一個(gè)迭代器指向鍵值為key 的元素,如果沒找到就返回end()默認(rèn)的比較方式是使用小于號(hào)運(yùn)算符()進(jìn)行比較,如果是系統(tǒng)提供的能夠使用小于號(hào)比較的元素類型就可以只寫元素類型;如果想用系統(tǒng)提供的大于號(hào)進(jìn)行比較,則還需要給出比較謂詞(std 中的less/greater 或者自定義的仿函數(shù));如果使用自定義的 struct/class,則需要
29、重載小于號(hào)運(yùn)算符。舉 3 例:map minMap;/注意 v 下面的空格:vmapfloat, struct nodei;, greater maxFloatMap;bool operator(const node &a)constreturn (i a.i);multimap minNodeMap;以上三個(gè) map/multimap 的元素分別按照整數(shù)升序、浮點(diǎn)降序、node.i 升序排列的。8. set/multiset頭文件: #include實(shí)例化(set): setSetName實(shí)例化(multiset): multisetSetName原型:namespatd template
30、class T, class Compare = less, class Allocator = allocator class set;template class T, class Compare = less, class Allocator = allocator class multiset;成員函數(shù):size_type count(const KeyType&key)返回鍵值等于key 的元素的個(gè)數(shù)iterator lower_bound( constkey_type &key );返回一個(gè)迭代器,指向鍵值 = key 的第一個(gè)元素。iterator upper_bound( co
31、nstkey_type &key );返回一個(gè)迭代器,指向鍵值 key 的第一個(gè)元素。size_type size()返回元素的數(shù)量。void swap( map &from );交換兩個(gè)map 中的元素parep();返回一個(gè)比較key 的函數(shù)。pare value _comp();返回一個(gè)比較value 的函數(shù)。reverse_iterator rbegin();返回一個(gè)逆向迭代器,指向鏈表的末尾reverse_iterator rend();返回一個(gè)指向開頭之前位置的逆向迭代器9. deque (Double Ended Queue)deque 和 vector 很相似,但是它允許在容器
32、頭部快速和刪除(就像在尾部一樣 ),構(gòu)造函數(shù)(使得可以在定義時(shí)賦初值)set();set(const set &from)set(input_iteratorstart, input_iterator end)對(duì)應(yīng) multiset 也有這三個(gè)構(gòu)造函數(shù)無初值由另一個(gè)set 初始化由start, end) 區(qū)間內(nèi)的值初始化運(yùn)算符, 包括=, !=, =, iterator begin()返回指向第一個(gè)元素的迭代器iterator end()返回指向末尾(最后一個(gè)元后的那個(gè)位置)的迭代器void clear()清空容器。bool empty()如果為空返回 true, 否則返回 falseiter
33、ator insert(TYPE &val );(上面的 insert 對(duì)multiset 無返回值) iterator insert(iterator loc, TYPE &val)void insert(input_iterator start,input_iterator end );一個(gè)元素, 對(duì)于 set 返回一個(gè) pair分別是元素的迭代器和是否成功從loc 開始尋找一個(gè)可以值為 value的元素的位置將其并返回其迭代器start, end) 之間的元素到容器中void erase(iterator loc) void erase(iterator start, iterator
34、end)size _type erase(const key_type &key)刪除loc 所指元素刪除start, end) 之間的元素刪除 key 值為value 的元素并返回被刪除元素的個(gè)數(shù)pair equal_range(const key_type&key)查找 multiset 中鍵值等于 key 的所有元素,返回指示范圍的兩個(gè)迭代器以 pair 返回size_type count(const KeyType&key)查找容器中值為key 的元素的個(gè)數(shù)iterator find(const key_type &key)返回一個(gè)迭代器指向鍵值為key 的元素,如果沒找到就返回end
35、()iterator lower_bound( constkey_type &key );返回一個(gè)迭代器,指向鍵值 = key 的第一個(gè)元素。iterator upper_bound( constkey_type &key );返回一個(gè)迭代器,指向鍵值 key 的第一個(gè)元素。size_type size()返回元素的數(shù)量。void swap( vector &from );交換兩個(gè)鏈表中的元素parep();返回一個(gè)比較key 的函數(shù)。pare value _comp();返回一個(gè)比較value 的函數(shù)。reverse_iterator rbegin();返回一個(gè)逆向迭代器,指向鏈表的末尾re
36、verse_iterator rend();返回一個(gè)指向開頭之前位置的逆向迭代器并提供對(duì)其內(nèi)部元素隨機(jī)頭文件: #include的能力(但速度稍慢于 vector)。實(shí)例化: dequeDequeName原型:namespatd template class T, class Allocator = allocator class deque;成員函數(shù):構(gòu)造函數(shù)(使得可以在定義時(shí)賦初值)deque ();deque (size_type n, const TYPE &v) deque (const deque &from)deque( input_iteratorstart,input_ite
37、rator end)無初值給出n 個(gè)初值由另一個(gè)vector 初始化由start, end) 區(qū)間內(nèi)的值初始化運(yùn)算符運(yùn)算符使deque 可以像數(shù)組一樣操作void assign(input_iterator start, input_iterator end);void assign(si ze_type num, constTYPE &val);清空 vector ,區(qū)間start, end)的內(nèi)容到list 中清空 vector,num 個(gè)值為val 的元素TYPE at(si ze_type loc)返回在loc 位置元素的值的,有TYPE &back()返回對(duì)最后一個(gè)元素的TYPE &
38、front()返回對(duì)第一個(gè)元素的iterator begin()返回指向第一個(gè)元素的迭代器iterator end()返回指向 deque 末尾(最后一個(gè)元后的那個(gè)位置)的迭代器void clear()清空 deque,但是不空間。bool empty()如果為空返回 true, 否則返回 falseiterator erase(iterator loc);iterator erase(iterator start, iterator end);刪除loc 所指元素并返回下一元素迭代器刪除start, end) 之間的元素,并返回最后一個(gè)被刪除元素的下個(gè)元素的迭代器iterator inser
39、t( iterator loc,const TYPE &value );void insert( iterator loc, size_type num, const TYPE &val); void insert( iterator loc, input_iterator start,input_iterator end );一個(gè)值為 value 的元素在 loc 位置并返回其迭代器,原loc 及以后的元素后移。num 個(gè)值為 value 的元素在 loc 位置,原loc 及以后元素后移。start, end) 之間的元素到loc 位置,原loc 及以后元素后移void pop_front(
40、);刪除 deque 的第一個(gè)元素。void push_front( const TYPE &val);將val 放置到 deque 的開頭。void pop_back();刪除 deque 的最后一個(gè)元素。void push_back( const TYPE &val );將val 放置到 deque 的最后。size_type size()返回list 中元素的數(shù)量。對(duì) deque 進(jìn) 行 排 序 可 以 使 用 STL 的 sort,stable_sort,partition,partial_sort, nth_element, 可以用 STL 的unique 算法對(duì)其進(jìn)行排重,但是一定
41、要這么寫:que.erase(unique(vt.begin(),que.end(),que.end();使用 STL 的 remove 或remove_if 算法刪除指定元素:que.erase(remove(que.begin(),que.end(), Type &value), que.end();que.erase(remove_if(que.begin(),que.end(), testfunc), que.end();10. string頭文件:#include /默認(rèn)情況下包含了iostream 就可以用了實(shí)例化:string StringName;原型:namespatd te
42、mplateclass charT,class traits = char_traits, class Allocator = allocator class basic_string;typedef basic_string string; /basic_string 的 char 版本成員函數(shù):構(gòu)造函數(shù)string();string( const string& s ); string(si ze_typelength,const char& ch)string( const char* str ); string(constchar*str, size_type length );str
43、ing( const string& str, size_type index, size_type length );string( input_iterator start, input_iterator end );無操作使用一個(gè)string 來初始化使用length 個(gè)字符 ch 來初始化使用一個(gè)字符數(shù)組初始化(ASCII0 結(jié)束)用一個(gè)字符數(shù)組最多前 length 個(gè)字符初始化用一個(gè)string 從 index 開始的最多l(xiāng)ength 個(gè)字符初始化用start, end) 之間的元素來初始化=, =, !=, +, +=, , , =, 可以像字符數(shù)組一樣隨機(jī)和寫入void resi
44、 ze ( size_t ype n, TYPE val = 0)將 deque 大小重置為n, 若n size() 只保留前面 n 個(gè)元素,否則最后 size() - n個(gè)元素置為value( 如果不給出,默認(rèn)為 0)void swap( vector &from );交換兩個(gè)鏈表中的元素reverse_iterator rbegin();返回一個(gè)逆向迭代器,指向鏈表的末尾reverse_iterator rend();返回一個(gè)指向開頭之前位置的逆向迭代器string& append( const string& str );string& append( const char* str);
45、string& append( const string& str, size_type index, size_type len );string& append( const char* str, size_type num );string& append( size_type num,char ch );string& append( input_iterator start, input_iterator end );末尾追加一個(gè)string追加一個(gè)字符數(shù)組追加一個(gè)string 從 index 開始的最多l(xiāng)en 個(gè)字符追加一個(gè)字符數(shù)組最多num 個(gè)字符追加num 個(gè)字符 ch追加st
46、art, end) 之間的元素void assign( size_type num, const char& val );void assign( input_iterator start, input_iterator end ); string& assign( const string& str );string& assign( const char* str);string& assign( const char* str, size_type num );string& assign( const string& str, size_type index, size_type le
47、n );賦值,num 個(gè)字符val賦值,start, end) 之間的元素賦值,string str 的內(nèi)容賦值,用字符數(shù)組賦值,用字符數(shù)組最多num 個(gè)字符賦值,用string 從index 開始的最多l(xiāng)en 個(gè)字符TYPE& at( size_type loc );返回在指定位置loc 的字符以或?qū)懭隿onst_iterator begin() const;返回指向頭部的迭代器const char * c_str();返回一個(gè)標(biāo)準(zhǔn)c 字符串,但是不允許修改,否則會(huì)破壞string 的內(nèi)部結(jié)構(gòu)size_type capacity() const;返回已分配空間可容納的最大字符數(shù)void cl
48、ear()清空string ,但是不回收空間compare(string a, string b)比較兩個(gè)字符串,ab 返回正數(shù), 可以使用字符數(shù)組。size_typecopy(char*str, size_type num, size_type index =0 ); /注意!調(diào)用這個(gè)函數(shù)的時(shí)候會(huì)自動(dòng)調(diào)用memset(str, NULL, sizeof(str) ;將string 中從 index( 默認(rèn)為 0)開始的最多num 個(gè)字符copy 到字符數(shù)組str 中,返回copy 的字符數(shù)。不建議使用。const char *data();返回指向第一個(gè)字符的指針(不要修改!)bool em
49、pty() const;返回true 如果字符串長(zhǎng)為 0const_iterator end() const;返回指向最后一個(gè)字符下一位置的迭代器iterator erase( iterator loc ); iterator erase( iterator start, iterator end );string& erase( size_type index = 0, size_type num = n );刪除loc 位置的字符刪除start,end) 之間的字符刪除從index 開始的num 個(gè)字符,返回*thissize_type find( const string& str, s
50、ize_type index ); size_type find( const char* str, size_type index );size_type find( const char* str, size_type index, size_type length );size_type find( char ch, size_type index );返回從 index 開始 str 第一次出現(xiàn)的位置,找不到就返回string:n( 常量)返回從 index 開始 str 第一次出現(xiàn)的位置,找不到就返回string:n( 常量)返回從 index 開始 str 前 length 個(gè)字符
51、第一次出現(xiàn)的位置,找不到就返回 string:n( 常量)返回從index 開始,字符ch 第一次出現(xiàn)的位置,找不到就返回string:nfind_not_of格式同find,返回第一個(gè)不是給定的字符串串中字符的位置find_of格式同find,返回第一個(gè)是給定的字符串串中字符的位置find_last_not_of格式同find,反向查找,返回第一個(gè)不是給定的字符串串中字符的位置find_last_of格式同同find,反向查找,返回第一個(gè)是給定的字符串串中字符的位置istream& getline( istream& is, string& s, char delimiter = n);從輸
52、入流is 中讀入一些字符到str 中,以delimiter( 默認(rèn)為n)結(jié)束iterator insert( iterator i, const char& ch );string& insert( size_type index, const string& str );string& insert( size_type index,const char* str );string& insert( size_type index1 , const string& str, size_typeindex2, size_type num );在迭代器i 指向的位置一個(gè)字符 ch在位置index
53、一個(gè)string在位置index一個(gè)C 字符串在index1 位置string 從index 2開始的最多num 個(gè)字符string& insert( size_type index, const char* str, size_type num ); string& insert( size_type index, size_type num, char ch );void insert( iterator i, size_type num, const char& ch ); void insert( iterator i, iterator start, iterator end );在
54、index 位置C 字符串的最多 num個(gè)字符在index 位置num 個(gè)字符 ch在迭代器i指向的位置num個(gè)字符ch在迭代器i 指向的位置start, end) 之間的字符。size_type length()返回string 的長(zhǎng)度(和size() 一樣)size_type max_si ze ()返回字符串最大能容納的字符數(shù)void push_back(char &c)字符c 到 string 的末尾reverse_iterator rbegin()返回指向最后一個(gè)字符的反向迭代器reverse_iterator rend()返回指向第一個(gè)字符之前位置反向迭代器string& repl
55、ace( size_type index, size_type num, const string&str );string& replace( size_type index1, size_type num1, const string& str, size_type index2, size_type num2 );string& replace( size_type index, size_type num, const char* str);string& replace( size_type index, size_type num1, const char* str, size_t
56、ype num2 );string& replace( size_type index, size_type num1, size_type num2,char ch );string& replace( iterator start, iterator end, const string& str);string& replace( iterator start, iterator end, const char* str ); string& replace( iterator start, iterator end, const char* str, size_type num );st
57、ring& replace( iterator start, iterator end, size_type num, char ch );替換(從 index 開始最多 num 個(gè)字符)為(string str)替換從(index1 開始最多num1 個(gè)字符)為(string str 從index2 開始的最多 num2 個(gè)字符)替換(從 index 開始的最多 num 個(gè)字符)為(C 字符串 str)替換(從 index 開始最多 num1 個(gè)字符)為(C 字符串 str 中的 num2 個(gè)字符,有可能越界)替換(從 index 開始最多 num1 個(gè)字符)為(num2 個(gè)字符 ch)替換
58、(本串中start, nd)之間字符)為 (string str)替換(本串中start,end) 之間字符)為(C 字符串str)替換(本串中start,end) 之間字符)為(c 字符串str 中最多num個(gè)字符,會(huì)越界)替換(本串中start,end) 之間字符)為num 個(gè)字符chstring:nstring 類的常量,如果查找時(shí)返回這個(gè)值表示沒有查找成功?;厥誷tr 占用的空間string (str).swap(str); /保留現(xiàn)有有效元素 string ().swap(str); /刪除所有元素刪除排序后的重復(fù)字符str.erase(unique(str.begin(), str
59、.end(), str.end();輸出字符串,不用prf(“%s”, str.c_str();string 的忽略大小寫排序仿函數(shù):struct stringcmpbool operator()(const string &a, const string &b)for(unsignedi=0; ia.si ze() & ib.si ze(); i+)if(toupper(ai) toupper(bi) return false; return a.si ze() b.si ze();setignoreCaseStringSet;mapignoreCaseString Map;void res
60、erve( size_type size );為string 開辟至少能寸下size 個(gè)字符的內(nèi)存,但不會(huì)刪除現(xiàn)有字符voidresi ze(size_typesize, const TYPE& val = TYPE() );改變string 的字符數(shù)為 size 個(gè),如果 sizesi ze() 后面的填充為valrfind格式同find,逆向查找size_type size();返回字符串中現(xiàn)有字符的個(gè)數(shù)string substr( size_type index, size_type length = n);返回包含從index 的最多l(xiāng)ength 個(gè)字符的string ,不指定leng
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣西壯族自治區(qū)來賓市武宣縣2024-2025學(xué)年八年級(jí)上學(xué)期期中考試地理試題(含答案)
- 制造業(yè)企業(yè)資產(chǎn)管理?xiàng)l例
- 燕歌行課件:2024年教學(xué)藝術(shù)的新高度
- 《接觸網(wǎng)施工》課件 3.2.2 橫梁安裝
- 快速上手ERP系統(tǒng):2024年培訓(xùn)教程
- 人教部編版《道德與法治》二年級(jí)上冊(cè)第12課《我們小點(diǎn)兒聲》精美課件(第2課時(shí))
- 《逃家小兔》課件設(shè)計(jì)與應(yīng)用
- 2024年幼兒?jiǎn)⒚桑骸短蛹倚⊥谩氛n件在早期教育中的妙用
- 2024大學(xué)批評(píng)通報(bào)(5篇)
- 科目四考試技巧口訣表-駕考實(shí)操
- 第1-4單元期中核心素質(zhì)檢測(cè)卷(試題)-2024-2025學(xué)年數(shù)學(xué)三年級(jí)上冊(cè)北師大版
- 摩托車維修技術(shù)考核試卷
- 6 我的家庭貢獻(xiàn)與責(zé)任(教學(xué)設(shè)計(jì)) 部編版道德與法治四年級(jí)上冊(cè)
- 2024七年級(jí)英語(yǔ)下冊(cè) Unit 6 I'm watching TV教案設(shè)計(jì)(新版)人教新目標(biāo)版
- 期中測(cè)試題-2024-2025學(xué)年道德與法治六年級(jí)上冊(cè)統(tǒng)編版
- 《珍愛生命拒絕毒品》主題班會(huì)課件
- 2024年貴州畢節(jié)市委政法委所屬事業(yè)單位考調(diào)6人歷年高頻500題難、易錯(cuò)點(diǎn)模擬試題附帶答案詳解
- GB/T 32399-2024信息技術(shù)云計(jì)算參考架構(gòu)
- 2024粵東西粵北地區(qū)教師全員輪訓(xùn)培訓(xùn)心得總結(jié)
- 安全生產(chǎn)治本攻堅(jiān)三年行動(dòng)方案2024~2026(工貿(mào))
- 人教版九年級(jí)數(shù)學(xué)下冊(cè)相似《相似三角形(第4課時(shí))》示范教學(xué)課件
評(píng)論
0/150
提交評(píng)論