C++ Primer筆記 容器和算法(2)
阿新 • • 發佈:2017-08-16
ring etc 指向 tor 隊列 code store iterator 手動
erase 刪除後 返回的是刪除元素的後一個叠代器位置
重置元素和交換元素
c.swap(c2)
c.assign(b,e)
c.assign(n,t) (叠代器不能是指向c的)
容器能夠自己主動增長
像vector這樣的增長代價比list要大
capacity()和reserve()
通常會預留比size大的空間,當不得不又一次分配內存時候,會加倍當前容量的分配策略
也能夠手動reserve(size) 分配
deque能夠隨機訪問
int main() { //怎樣正確的刪除全部元素 循環 int a[]={1,2,3,4,5,6,7,8,9}; vector<int> v(a,a+6); for(vector<int>::iterator it=v.begin();it!=v.end();) { it=v.erase(it); } for(vector<int>::iterator it=v.begin();it!=v.end();it++) { cout<<*it<<endl; } cout<<v.size()<<endl; getchar(); return 0; }
重置元素和交換元素
c.swap(c2)
c.assign(b,e)
c.assign(n,t) (叠代器不能是指向c的)
容器能夠自己主動增長
像vector這樣的增長代價比list要大
capacity()和reserve()
通常會預留比size大的空間,當不得不又一次分配內存時候,會加倍當前容量的分配策略
也能夠手動reserve(size) 分配
deque能夠隨機訪問
String s4(s3.begin(),s3.end())
適配器
1. Stack<int> stack(deq)‘
Stack,queue都基於deque實現
2. Priority_queue 基於vector實現
棧
s.empty()
s.size()
s.pop()
s.top()
s.push(item)
隊列
q.empty()
q.size()
q.pop()
q.front()
q.back()
q.top()
q.push()
關聯容器
Map與set
Map:key-value
Set:一個key
Multimap:同一個鍵多次出現的map類型
Multiset:同一個鍵多次出現的set類型
1.Pair 類型
創建與初始化: pair<string,string> p;
p.first 第一個元素 p.second 第二個元素
又一次生成: pair<string,string>next;
Next=make_pair(first,last);
也支持直接賦值
Next.first=xx. Next.second=xx;
2.關聯容器:
2.1 map
Map<ISBN,sales> bookstore;
Map<k,v>::key_type , mapped_type,value_type(pair類型)
C++ Primer筆記 容器和算法(2)