// 容量管理
// 將 capacity 減少到和 size() 相同
// 用於 vector string deque
// 不一定執行
// c.shrink_to_fit()
// 不重新分配內存的話,c 可以保存多少元素
// 用於 vector string
// c.capacity()
// 分配至少能容納 n 個元素的空間
// 用於 vector string
// 不改變容器中元素的數量,僅影響預先分配多大的內存空間
// 只有當需要的內存空間超過當前容量時,reserve 調用纔會改變容量,至少分配與需求一樣大的空間
// 如果需求小於當前容量,容器不會退回內存空間
// c.reserve(n)
// 適配器(adaptor),使某種事物的行爲看起來像另一種事物
// 都支持的操作和類型
// size_type 足以保存當前類型的最大對象的大小
// value_type 元素類型
// container_type 實現適配器底層容器類型
// A a 創建一個空適配器
// A a(c) 創建一個適配器,帶有容器 c 的一個拷貝
// ==, !=, >, >=, <, <=
// a.empty() 若 a 包含任何元素,返回 false, 否則返回 true
// a.size() 返回 a 中元素數目
// swap(a,b)
// a.swap(b) 交換 a 和 b 的內容,必須相同的類型,包括底層容器類型也必須相同
// stack 棧適配器,默認基於 deque 實現
// 需要 push_back pop_back back 操作,可以用除 array,forward_list 外的其他容器構造
// s.pop() 刪除棧頂元素,但不返回該值
// s.top() 返回棧頂元素,但不將其彈出
// s.push(t) 創建一個元素,壓入棧頂,該元素通過拷貝或移動 t 獲得,或由 args 構造
// s.emplace(args)
// queue 隊列適配器,默認由 deque 實現,first-in,first-out (FIFO),隊尾插入,隊首刪除
// 需要 push_back back push_front front,可用 list deque 構造,不能是vector
// q.back() 返回尾元素,但不刪除此元素
// priority_queue 隊列適配器,,默認由 vector 實現,按優先級,將元素插入所有優先級低於他的元素之前
// 需要 front push_back pop_back,以及隨機訪問能力,可以用 vector deque 構造,不能是 list
// q.top() 返回最高優先級的元素,但不刪除此元素
// 隊列通用
// q.pop() 返回 queue 的首元素或 priority_queue 最高優先級的元素,但不刪除此元素
// q.front() 返回首元素,但不刪除此元素
// q.push(t) 創建一個元素,壓入棧頂,該元素通過拷貝或移動 t 獲得,或由 args 構造
// q.emplace(args) 在 queue 末尾或 priority_queue 中恰當的位置創建一個元素,值爲 t,或由 args 構造
#include<vector>
#include<iostream>
#include<string>
#include<stack>
using std::vector;
using std::string;
using std::stack;
using std::endl;
using std::cout;
using std::cin;
int main()
{
vector<int> vi{2,53,23};
cout << "capacity:"<<vi.capacity() <<endl;
cout << "size:"<<vi.size() <<endl;
vi.pop_back();
cout << "capacity:"<<vi.capacity() <<endl;
cout << "size:"<<vi.size() <<endl;
vector<string> vs;
vs.reserve(5);
cout << "before_capacity:"<<vs.capacity() <<endl;
cout << "before_size:"<<vs.size() <<endl;
string word;
while (cin >> word)
vs.push_back(word);
vs.resize(vs.size() + vs.size() / 2);
cout << "after_capacity:"<<vs.capacity() <<endl;
cout << "after_size:"<<vs.size() <<endl;
}
c++ primer(第五版)筆記 第九章 順序容器(3)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.