STL 課後總結

2021-10-03 18:47:13 字數 3365 閱讀 3107

一:本節課學到了什麼:

本節課主要學習了關於stl(模版庫)的一些相關知識。

stl是一種泛型程式設計。物件導向程式設計關注的是程式設計的資料方面,而泛型程式設計關注的是演算法。它們之間的共同點是抽象和建立可重用**,但它們的理念截然不同。

stl可分為容器(containers)、迭代器(iterators)、空間配置器(allocator)、配接器(adapters)、演算法(algorithms)、仿函式(functors)六個部分。本節課主要學習了關於容器方面的知識.

string:

string-字串型別,使用string 類要包含標頭檔案

string定義的字串s,當cin>>s時,s中不含有空格。但可以使用getline()函式,getline()可以讀入含有空格的字串,以回車鍵結束。

例如:string s;

while(getline(cin,s))

cout<>s)時,遇到無效操作會停止輸入,例如(f6,ctrl+z)等。

string的常用操作

getline(is,s) //從輸入流is中讀取一行賦給s,返回is。

s.empty() //s為空返回ture,否則返回false

s.size() //返回s中字元個數

s1 = s2 //賦值

s1+s2 //連線,返回s1 s2連線後的結果

s1+=s2 //追加,把s2的內容追加到s1後面

s1==s2 //相等

s1!=s2 //string 物件的比較對字母區分大小寫

<,<=,>,>= //利用字元在字典中的順序進行比較,字母區分大小寫

os<>s //從輸入流is讀取字串賦給s,字串以空白分隔,返回i

棧(stack)

stack是一種先進後出(first in last out, filo)的資料結構,它只有乙個出口,只能操作最頂端元素。

標頭檔案: #include

定義:stackstack_name;

如:stack s;

操作:empty() – 返回bool型,表示棧內是否為空 (s.empty() )

size() – 返回棧內元素個數 (s.size() )

top() – 返回棧頂元素值 (s.top() )

pop() – 移除棧頂元素(s.pop(); )

push(data_type a) – 向棧壓入乙個元素 a(s.push(a); )

佇列(queue)

queue是一種先進先出(first in first out, fifo)的資料結構,從底端加入元素,從頂端取出元素。

標頭檔案: #include

佇列的操作方法與棧基本類似,但也有不同,如

front() – 返回queue內的下乙個元素 (q.front() )

back() – 返回queue內的最後乙個元素(q.back() )

vector動態陣列

動態陣列//當定義陣列中元素的個數超過陣列開闢的空間時,使用動態陣列會自動擴大

標頭檔案:#include

操作:empty() size() 與前面也都一樣

push_back(data_type a) 將元素a插入最尾端

pop_back() 將最尾端元素刪除

v[i] 類似陣列取第i個位置的元素(v[0] )

sort 排序

標頭檔案: #include

sort(begin, end); //預設從小到大排序

sort(begin, end, cmp);//begin是陣列的第乙個有效值,end是陣列最後一位有效值的後一位。cmp 函式需要自己定義。

sort函式可用於結構體,向量的排序

優先佇列

//按照優先權把極值排在前面

乙個擁有權值觀念的queue,自動依照元素的權值排列,權值最高排在前面。預設情況下,priority_queue是利用乙個max_heap完成的

標頭檔案: #include

定義:priority_queue q;//預設是大頂堆(第乙個元素最大)

操作:q.push(elem) 將元素elem置入優先佇列

q.top() 返回優先佇列的下乙個元素

q.pop() 移除乙個元素

q.size() 返回佇列中元素的個數

q.empty() 返回優先佇列是否為空

生成排列

標頭檔案: #include

bool next_permutation(begin, end);

改變區間內元素的順序,產生下乙個排列。

bool prev_permutation(begin, end);

產生前乙個排列。

end為最後乙個元素的下乙個位置。

二:本週應用stl解決的問題。

描述給定乙個十進位制正整數n(0 < n < 1000000000),每個數字上數字均不為0。n的位數為m。

現在從m位中刪除k位(0輸入

第一行t, 表示有t組資料;

接下來t行,每一行表示一組測試資料,每組測試資料報含兩個數字n, k。

輸出t行,每行乙個數字,表示從n中刪除k位後得到的最小整數。

(貪心演算法,一開始理解錯題意了以為數字可以隨意調整順序,一直wa)

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

intmain()

} cout<}}

本題所呼叫的erase函式是用來操作string的,erase函式的功能就是用來刪除容器中的元素。函式原型如下:

string& erase(size_t pos=0,size_t n=npos);刪除從pos開始的第n個字元,比如erase(0,1)就是刪除第乙個字元。

三:學習的感想和體會:

stl裡的內容有很多,老師課上也只是大體從幾個方面講解,有一些內容還是需要自己去查詢搜尋。stl裡的用法太多需要花時間去記憶,關於stl我感覺string和sort用的比較多,最近做題經常用sort排序,sort比其他的排序**少應用方式簡單。

自己要抓緊時間把stl裡的相關知識盡快掌握。

(貪心演算法太難了!!!給我整吐了)希望能盡快把貪心做完,多掌握一些知識。

MYSQL課後總結

資料庫是什麼?資料庫系統 database system 是由資料庫及其管理軟體組成的系統。資料庫就是儲存資料的地方,傳統意義上不包括檔案系 資料庫是由2部分組成 1.db資料庫本身 我們看不見 2.資料庫管理系統 資料庫分為三類 1.關係型資料庫 是指包括相互聯絡的邏輯組織和訪問這些資料的一套程式...

shell課後總結

shell課後總結 歸檔 學習筆記 2017年12月4日13 31 08 快捷鍵 ctrl 1 標題1 ctrl 2 標題2 ctrl 3 標題3 ctrl 4 例項ctrl 5 程式 ctrl 6 正文格式說明 藍色字型 注釋 黃色背景 重要 綠色背景 注意 1.1 目錄 i第一章 11.1.1 ...

STL容器總結

一.種類 值得注意的是,陣列可以和 stl演算法配合,因為指標可以當作陣列的迭代器使用。二.刪除元素 如果想刪除東西,記住 remove 演算法後,要加上 erase 所謂刪除演算法,最終還是要呼叫成員函式去刪除某個元素,但是因為 remove 並不知道它現在作用於哪個容器,所以 remove 演算...