C 《C 標準程式庫》小結第十章 特殊容器

2021-07-10 15:38:31 字數 1396 閱讀 8156

(一)stack堆疊

a)       lifo後進先出。一般只有三個介面有用:pop(), push(), top()。

b)       可以自己製作乙個,一般封裝deque,原因是deque釋放元素就直接釋放了記憶體,符合堆疊特性。

(二)queue佇列

a)       fifo先進先出。核心介面:push(), pop(), front(), back()。

b)       一般封裝deque,理由同上。

(三)priority queue優先佇列

a)       核心介面:push(), pop(), top()。

b)       一般封裝vector,原因是採用heap演算法。用deque也行。

(四)bitset

a)       乙個內含位(bit)的固定大小的array容器。適用於管理標誌(flag)。速度一般並不是非常高效。

b)       可以方便的在數與二進位制編碼之間轉化:

cout <::digits >(267);

cout << bitset<100>(string(「1000101011」)).to_ulong();

關於數值極限,請參考第四章。

c) bitset的初始化方式:

bitset( value );

bitset(const string&, str_idx);

bitset(const string&, str_idx,str_num);

string 裡只能是包含0和1的字串。

str_idx   是字串的位置

str_num 是轉化多少個位

d) 特殊操作

函式名作用

count()

位值為1 的個數

any()

只要有1就為真

none()

都為0就是真

test(idx)

判斷位是否為1

set()

全部設為1

set(idx)

設某位為1

set(idx,value)

設某位的值

reset

全為0reset(idx)

某位設為0

flip

翻轉所有位

flip(idx)

翻轉某一位

自己看左移動,空白填0

右移動,空白填0

~bitset

返回翻轉值

bitset << num

返回左移動num位的值

bitset >> num

返回右移動num位的值

& | ^ bitset

自己看可以使用標準io庫來輸入輸出,比如cin >> bitset; cout << bitset;

只能是包含0和1的字串。

C 標準程式庫 學習筆記 第十章 特殊容器

特殊容器 stack 棧 queue 佇列 priority queue優先佇列 特殊容器沒有迭代器的喲 1.stack 棧 預設由deque實作而成 主要是用 push pop top 三個成員函式 author wzy1222 email 627440781 qq.com for stack i...

10 4 第十章小結

10.4 第十章小結 在這一章,我們 了與函式程式效率有關的問題,討論了用函式方式處理大量資料。因為大多數函式程式使用遞迴實現,這一章的很大一部分就是圍繞這個主題。可以看到,使用遞迴的 一定要仔細,避免由於遞迴太深,引起堆疊溢位的錯誤。在本章開頭,我們討論了一種稱為尾遞迴的技術,它可用來重寫我們熟悉...

C 《C 標準程式庫》小結第十二章 數值

一 複數 1 複數相關演算法少,請移步科學計算庫。2 c 中使用複數complex需要 include 複數普通表現形式為a bi,也可以通過polar函式轉化 complexc1 4.0,3.0 complexc2 polar 5.0,0.75 極座標轉化,模和幅角 注意,complex 高精度 ...