個人筆記,txt備份用。不考慮排版。
順序容器型別:
vector 可變陣列,支援快速隨機訪問 在尾部之外的地方插入元素不方便
deque 雙端佇列,支援快速隨機訪問,在首尾部之外的地方插入刪除元素麻煩
list 雙向鍊錶 任何位置插入刪除元素快 只能雙向訪問
forward_list 單向鍊錶 任何位置插入刪除元素快 只能單向訪問
array 固定長度陣列 支援快速隨機訪問 無法增刪元素
string 字串 支援快速隨機訪問 在尾部之外的地方插入元素不方便
除非有很好的理由選擇其他容器 否則使用vector
如果要求在容器中間插入或刪除 使用list or forward_list
如果要求隨機訪問 使用vector deque
如果要求在頭尾插入刪除但不影響中間 使用deque
型別別名:
value_type t;元素型別別名
allocator_type;分配器型別
size_type; 無符號型別 通常是std::size_t
difference_type 有符號型別通常是std::ptrdiff_t
reference相當於value_type&相當於t& 元素型別引用
const_reference相當於const value_type&相當於const t & 常量引用
pointer相當於value_type相當於t;元素型別指標
const_pointer相當於const value_type 相當於const t;常量指標
iterator;迭代器型別
const_iterator;常迭代器
reverse_iterator;反向迭代器
const_reverse_iterator常反向迭代器
建構函式通用寫法
c c;預設建構函式 構造空容器
c c1(c2);拷貝構造,將c2拷貝到c1
c c(b,e)構造c,將b和e指定範圍的內容拷貝到c裡(array不支援)
c c 列表初始化c
賦值與swap
c1=c2 將c1的內容替換為c2
c1=將c1中元素替換為列表內內容
a.swap(b) 交換a和b中元素,等價於swap(a,b)
c.assign(b,e) 重新設定 c 的元素:將迭代器 b 和 e 標記的範圍內所有的元素複製到 c 中。b 和 e 必須不是指向 c 中元素的迭代器
c.assign(n,t) 將容器 c 重新設定為儲存 n 個值為 t 的元素
大小:c.size() c中元素數目//(forward_list無此操作)
c.max_size() c中可保留最大元素數量
c.empty() 是否為空
刪增操作
push(emplace)_back/front 尾部/頭部 增加/刪除元素 array不支援 forward_list不支援push_back和emplace_back array全部不支援;//返回void
insert(p,t) 在指定p位插入t,forward_list和array不支援,forward_list有特殊版本 insert_after //返回插入元素的迭代器位置
erase(args)刪除args內指定的因素,erase返回刪除的(最後乙個)元素之後位置的迭代器, forward_list中使用特殊版本erase——erase_after(const_iterator pos )/erase_after(const_iterator begin,const_iterator end) 擦除範圍內的元素
pop_back/front() 刪除尾元素/首元素 vector不支援pop_front forward_list不支援pop_back
訪問操作 下標訪問和at訪問僅適用於string vector deque array
forward_list不支援back()操作。
back() 返回尾元素的引用,若c為空,則未定義
front() 返回首元素的引用,若c為空,則未定義
c[n]返回下標為n的引用 若n>c.size(),則未定義
c.at(n)返回下標為n的引用,若n>size(),則未定義
begin 和end
c.begin() 返回乙個迭代器,它指向容器c的第乙個元素。 常量版本cbegin()
c.rbegin() 返回乙個逆序迭代器,它指向容器c的最後乙個元素。
c.end() 返回乙個迭代器,它指向容器c的最後乙個元素的【下乙個位置//而非最後乙個元素!!!】。常量版本cend()
c.rend() 返回乙個逆序迭代器,它指向容器c的第乙個元素的前面位置。
string vector deque管理容器大小的特殊操作
shrink_to_fit() 將capacity請求與size保持同樣大小
string vector特殊操作
capacity()返回不重新申請記憶體的話,該物件可儲存多少元素
reserve(new_cap) 增加 vector 的容量到大於或等於 new_cap 的值。若 new_cap 大於當前的 capacity() ,則分配新儲存,否則該方法不做任何事。reserve() 不更改 vector 的 size 。
C primer 第九章筆記 初稿
性質 容器中元素的順序與加入的位置相對應,為使用者提供了控制元素儲存和訪問順序的能力。六大順序容器 名稱功能 特點 vector 可變大小陣列 支援快速隨機訪問,除尾部外插入 刪除較慢 deque 雙端佇列 支援快速隨機訪問,頭尾外插入刪除較慢 list 雙向列表 支援雙向順序訪問,任何位置插入刪除...
c primer 筆記 第九章 順序容器
1.vector,deque,list,forward list,array,string的區別 vector 可變大小陣列,支援快速隨機訪問,在尾部之外的位置插入或刪除元素可能很慢 deque 雙端佇列,支援快速隨機訪問,在中間位置新增或刪除元素的代價可能很高,但是在兩端新增或刪除元素很快 lis...
第九章(筆記)
轉移指令是可以修改ip,或同時修改cs和ip的指令 offset 是用於提取標號偏移位址的操作符 jmp在第2章裡說到時用於修改ip或同時修改cs和ip的轉移指令,這章裡單獨的jmp指令是乙個無條件的轉移指令 jmp short 標號 是實現段內短轉移 jmp near ptr 標號 是實現段內近轉...