1. 程式人生 > >CCF考試中常用到的庫函式的操作

CCF考試中常用到的庫函式的操作

作為一個程式設計的初學者,在學校能夠參加的認證考試也就是隻有CCF認證考試了,而對於這個認證考試,一般套路固定,第三題多為字串操作的題目,第四題多為圖的相關演算法,基本廣搜和深搜都可解決一些問題,為了在考試時能更高效地編碼,在此對一些常用的庫函式做一些總結:

1.C++字串操作函式:

#include<string>

string型別作為一個類而不是基礎資料型別,有其構造方法,庫函式中提供的方法我認為比較好用的有以下幾種:

(1)strings;  //生成一個空字串s(2)string s(str)//拷貝建構函式生成str的複製品

(3)strings(chars,chars_len)//

將C字串前chars_len個字元作為字串s的初值。

除了構造方法之外,還有一些字串操作的函式,很好用,初學者可以把string型別當成int型別來看。(過載運算子真是c++中一個非常高明的地方):

(1)=,assign()   //賦以新值(2)swap()   //交換兩個字串的內容(3)+=,append(),push_back() //在尾部新增字元(4) insert() //插入字元(5) erase() //刪除字元(6) clear() //刪除全部字元

(7)replace()//替換字元

(8)+//串聯字串(9)==,!=,<,<=,>,>=,compare()  //比較字串

(10)size(),length()  //

返回字元數量(11)empty()  //判斷字串是否為空

 2.C++vector操作函式

#include<vector>

vector作為容器,時常用在我需要動態儲存資料時,有時為了減小空間複雜度,不會設定固定大小的陣列,而使用vector,相關的操作函式也很簡單,可能起到的作用比儲存還要多。其構造方法常用的為:

(1)vector<int>  c               // 建立一個空的vector(2)vector<int> c1(c2)          // 複製一個vector(3)vector<int> c(n)            // 建立一個vector,含有n個數據,資料均已預設構造產生

相關的操作函式為:

c.assign(beg,end)   // 將[beg; end)區間中的資料賦值給c。

c.assign(n,elem)     // 將n個elem的拷貝賦值給c。c.at(idx)      //傳回索引idx所指的資料,如果idx越界,丟擲out_of_range。c.back()     // 傳回最後一個數據,不檢查這個資料是否存在。c.begin()    // 傳回迭代器中的第一個資料地址。c.capacity() // 返回容器中資料個數。c.clear()    // 移除容器中所有資料。c.empty()    // 判斷容器是否為空。c.end()      // 指向迭代器中末端元素的下一個,指向一個不存在元素。c.erase(pos) // 刪除pos位置的資料,傳回下一個資料的位置。c.erase(beg,end) //刪除[beg,end)區間的資料,傳回下一個資料的位置。c.front()    // 傳回第一個資料。c.get_allocator // 使用建構函式返回一個拷貝。c.insert(pos,elem)   // 在pos位置插入一個elem拷貝,傳回新資料位置。c.insert(pos,n,elem) // 在pos位置插入n個elem資料。無返回值。c.insert(pos,beg,end)// 在pos位置插入在[beg,end)區間的資料。無返回值。c.max_size()      // 返回容器中最大資料的數量。c.pop_back()      // 刪除最後一個數據。c.push_back(elem) // 在尾部加入一個數據。c.rbegin()        // 傳回一個逆向佇列的第一個資料。c.rend()          // 傳回一個逆向佇列的最後一個數據的下一個位置。c.resize(num)     // 重新指定佇列的長度。c.reserve()       // 保留適當的容量。c.size()          // 返回容器中實際資料的個數。c1.swap(c2)swap(c1,c2)       // 將c1和c2元素互換。同上操作。

對於新手,個人認為,掌握push_bak(),pop_back(),assign()insert(),back(),begin()差不多就可以了,大部分情況下,我都是當它是陣列使用的,例如訪問最後一個元素時,我經常這樣寫c[c.size()-1],也不知道這樣好不好。

 3.C++queue操作函式

#include<queue>

佇列其實很多操作和vector一樣,馬上要講到的stack其實也一樣,不過學了資料結構的新手們還是能稍微分別兩者的一些差別的,不多說,先上函式:

empty():返回bool型別的值,是否佇列為空

push():會將一個元素置入queue中

front():會返回queue內的第一個元素(隊頭)

back():會返回queue中的最後一個元素(隊尾)

pop():會移除queue內的第一個元素(隊頭,與stack不同,先進者先出)

size():返回佇列中元素多少

除此之外,我記得有一次看程式碼有一個priority_queue,可以在儲存的同時將佇列排序成為降序,想要排列成為升序?把要排的類的<操作符過載為相反的意思就可以啦。

4.C++stack操作函式

#include<stack>

棧的操作與佇列相差不多,直接上函式:

empty():返回bool型別的值,是否為空

push():入棧,將一個元素插入到棧頂

pop():出棧,講一個元素移除棧頂,不返回該值

top():返回棧頂元素

size():返回棧中元素的多少