基礎班 STL(1)

By Chess

Outline

  • Vector

  • Iterator

  • Stack

  • Queue

  • Deque

  • Bitset

Vector

  • 課金版的Array

  • 可以隨時變動陣列長度​

宣告

Member function

  • empty()       // 檢查是否為空
  • size()        // 回傳vector中元素個數
  • erase(位置)   // 清除該元素
  • clear()       // 清空整條vector
  • capacity()    // 回傳vector容量
  • resize(值)    // 重定vector個數
  • reserve(值)   // 重定vector容量

Iterator

  • STL容器中不可或缺的東西

  • 功能強大 類似於pointer

  • begin()     // 指向容器的頭
    
  • end()       // 指向容器的尾"的下一個"
  • Example:

Stack

  • 先進後出

  • 疊盤子

Member function

  • empty()         // 檢查是否為空
  • size()          // 回傳stack中元素個數
  • push(值)        // 將元素推入stack中
  • pop()           // 將stack中最上面元素彈出來
  • top()           // 回傳目前最上面的元素

清空整個stack

練習

  • UVa 673

Queue

  • 先進先出
  • 排隊 (台灣最美的風景是插隊 (X
  • 只能從屁股放

Member function

  • empty()            // 檢查是否為空
  • size()                // 回傳queue中元素個數
  • push(值)           // 將元素推入queue中*
  • pop()                // 將queue中最前面元素彈出來*
  • front()              // 回傳queue最前端元素
  • back()               // 回傳queue最尾端元素

Priority_Queue

  • 與Queue幾乎相同,多了自動排序

宣告

Bonus

Deque

  • 大致上跟Queue是相同的

  • 唯一的差別是Deque可以頭或從屁股放(雙向的)

  • 有operator[ ]

Member function

  • push_front(值)      // 將資料從最前面放進去
  • push_back(值)       // 從最後面放進去
  • pop_front()         // 彈出最前面的元素
  • pop_back()          // 彈出最後面的元素

練習

  • •UVa 11995
  • •UVa 11997

Bitset

•二進位相關處理

宣告

運算

  • NOT     : ~
  • OR      : |
  • AND     :  &
  • XOR     :  ^
  • >>      : 右移
  • <<      : 左移
  • b[n]    : 直接對第n bit做更改

Member function

  • flip()  // 將全部b的bit做not(= ~b)
  • reset() // 將全部bit設為0
  • set()   // 將全部bit設為1
  • count() // 回傳有幾個bit為1
  • size()  // 回傳有幾個bit

轉型

  • to_string()  // 將bit轉成string
                    (還是以01儲存)
  • to_ulong()   // 將bit轉成unsigned long
                    (變成10進位UL)
  • to_ullong()  // 將bit轉成unsigned long long 
                    (變成10進位ULL)

END

[20190225] CPC - STL(1)

By Chess Kuo

[20190225] CPC - STL(1)

  • 380