C 語法學習(8)

2021-08-22 08:13:01 字數 1460 閱讀 7068

1.序列式容器(sequence containers)

每個元素都有固定位置--取決於插入時機和地點,和元素值無關。

vector、deque、list  

關聯式容器(associated containers)

元素位置取決於特定的排序準則,和插入順序無關 

set、multiset、map、multimap

2.迭代器從作用上來說是最基本的部分,可是理解起來比前兩者都要費力一些。軟體設計有乙個基本原則,所有的問題都可以通過引進乙個間接層來簡化, 這種簡化在stl中就是用迭代器來完成的。概括來說,迭代器在stl中用來將演算法和容器聯絡起來,起著一種黏和劑的作用。幾乎stl提供的所有演算法都是通 過迭代器訪問元素序列進行工作的,每乙個容器都定義了其本身所專有的迭代器,用以訪問容器中的元素。

迭代器部分主要由標頭檔案,和組 成。是乙個很小的標頭檔案,它包括了貫穿使用在stl中的幾個模板的宣告,中提供了迭代器 使用的許多方法,而對於的描述則十分的困難,它以不同尋常的方式為容器中的元素分配儲存空間,同時也為某些演算法執行期間產生 的臨時物件提供機制,中的主要部分是模板類allocator,它負責產生所有容器中的預設分配器。

3.operator和at()均返回當前字串中第n個字元,但二者是有區別的。

主要區別在於at()在越界時會丟擲異常,在剛好越界時會返回(char)0,再繼續越界時,編譯器直接出錯。如果你的程式希望可以通過try,catch捕獲異常,建議採用at()。

4.string和char*的比較

string是乙個類, char*是乙個指向字元的指標。

string封裝了char*,管理這個字串,是乙個char*型的容器。

string不用考慮記憶體釋放和越界。

string管理char*所分配的記憶體。每一次string的複製,取值都由string類負責維護,不用擔心複製越界和取值越界等。

string提供了一系列的字串操作函式(這個等下會詳講)

查詢find,拷貝copy,刪除erase,替換replace,插入insert

5.vector是將元素置於乙個動態陣列中加以管理的容器。

vector可以隨機訪問元素(支援索引值直接訪問, 用操作符或at()方法)。

vector尾部新增或移除元素非常快速。但是在中部或頭部插入元素或移除元素比較費時

6.輸入迭代器:也有叫法稱之為「唯讀迭代器」,它從容器中讀取元素,只能一次讀入乙個元素向前移動,只支援一遍演算法,同乙個輸入迭代器不能兩遍遍歷乙個序列。

輸出迭代器:也有叫法稱之為「只寫迭代器」,它往容器中寫入元素,只能一次寫入乙個元素向前移動,只支援一遍演算法,同乙個輸出迭代器不能兩遍遍歷乙個序列。

正向迭代器:組合輸入迭代器和輸出迭代器的功能,還可以多次解析乙個迭代器指定的位置,可以對乙個值進行多次讀/寫。

雙向迭代器:組合正向迭代器的功能,還可以通過--操作符向後移動位置。

隨機訪問迭代器:組合雙向迭代器的功能,還可以向前向後跳過任意個位置,可以直接訪問容器中任何位置的元素。

c 語法學習

迴圈和關係表示式 for迴圈 表示式和語句 遞增和遞減,字首式效率更高 組合賦值操作符 復合語句 逗號操作符 關係操作符,和 while迴圈 typedef工具 dowhile迴圈 get 字元輸入方法 檔案尾條件 巢狀迴圈和二維數值 strcmp a,b 判斷兩個字串是否相等 cin如何處理字元輸...

Python基礎語法學習8

字串常用方法 函式的作用 函式的定義 語法 帶有格式佔位符的字串 資料1,資料2,資料3,說明 1.格式佔位符 字串中不同型別資料的佔位符號,固定的。s 字串的格式佔位符 任何類的資料都可以賦值 d 整數的格式佔位符 f 浮點數的格式佔位符 c 字元的格式佔位符 2.固定寫法 3.資料 最後給字串中...

C 基礎語法學習

基本用語區分 解決方案和專案 解決一類問題的方案。比如要建一套房子是不是要有一套解決方案,那是不是要把該方案分解成幾個小專案,如設計,裝修,水電安裝,材料運輸等專案 c 和.net net 是一種平台一種技術,裡面包含著乙個非常大的 庫 可以模擬成 jvm c 是一種語言,我們可以使用c 去呼叫.n...