知識碎片C

2021-08-28 04:21:53 字數 1632 閱讀 5466

記錄一些c++零碎知識

求map的長度用m.size()map沒有default value,但是會使用型別的預設值。例如如果value的型別是int,就會預設為0; 型別是string,預設為空字串。

map已經排序,如果修改排序方式,兩種方法:

重構key型別的operator <使用仿函式

map的operatorfind()複雜度為log(m.size())。二者的區別是前者會為不存在的key自動設定value為預設值並返回,後者會返回m.end()unordered map的訪問平均複雜度是constant, 但是最壞複雜度是o(n).

map的查詢,插入,刪除最壞複雜度都是olog(n),而unordered_map的三種操作平均複雜度都是o(1), 但是最壞複雜度是o(n).

map可以從大到小輸出所有元素。

map可以用lower_bound和upper_bound函式進行二分查詢

to_string()將其他數值型別轉換成string型別

stringstream也可以用來型別轉換。注意stream>>是從string輸出,stream<<是輸入到string。因為這裡的stream是緩衝區的概念,模擬於cin是輸入緩衝區,cout是輸出緩衝區。

queue和deque都可以通過front()和back()來訪問第乙個元素和最後乙個元素。

c++的stack.top()返回的引用可以修改棧頂元素的值

它們可以在已排序陣列或容器上使用,例如vector, set, map.

注意事項:

三個引數,first, last, key. 在[first, last)上查詢。

lower_bound返回的是》=key的最小迭代器,upper_bound返回的是》key的最小迭代器。如果容器裡沒有key,則lower_bound和upper_bound返回值相同。

如果[first, last)中所有值都注意返回的是迭代器,如果要計算下標,需要減去first的迭代器。

線性複雜度

make_heap(first, last, comp) 線性複雜度建堆

pop_heap() 對數複雜度

push_heap() 對數複雜度

sort_heap() o(nlog(n))複雜度

引數不需要取位址,傳引用。兩種引數型別,一種是資料型別如int,一種是容器如vector.

重新排列陣列,讓陣列的(從小到大排序後的)第n個元素在第n個位置。(有點類似快排的partition函式)。

Android碎片知識

1.空格佔位符對齊 普通的英文半形空格 no break space 普通的英文半形空格但不換行 中文全形空格 乙個中文寬度 en空格 半個中文寬度 em空格 乙個中文寬度 四分之一em空格 四分之一中文寬度 2.android scrollview自動滑動一段距離的問題解決 問題出現的原因是因為s...

知識碎片 2017

1 建立共享庫 q decl export 巨集宣告該類作為共享庫匯出 q decl import.巨集宣告從共享庫匯入 note 建立共享庫的方法詳見qt幫助文件 2 同步非同步 阻塞和非阻塞 同步非同步關注的是訊息通訊機制 阻塞和非阻塞與執行緒相關 阻塞,非阻塞 程序 執行緒要訪問的資料是否就緒...

C 知識碎片整理(9) Vector List

在c 中,vector是乙個十分有用的容器,下面對這個容器做一下總結。1 基本操作 1 標頭檔案 include.2 建立vector物件,vectorvec 3 尾部插入數字 vec.push back a 4 使用下標訪問元素,cout 5 使用迭代器訪問元素.vector iterator i...