1. 程式人生 > >C++ Primer筆記 容器和算法(2)

C++ Primer筆記 容器和算法(2)

ring etc 指向 tor 隊列 code store iterator 手動

erase 刪除後 返回的是刪除元素的後一個叠代器位置
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)