C primer 第九章個人筆記

2021-10-09 22:13:20 字數 2619 閱讀 7530

個人筆記,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 標號 是實現段內近轉...