c++容器之常用函数(1)

#include<iostream>
#include<vector> 
#include<deque>
#include<list>
#include<forward_list>
#include<set>
#include<unordered_set>
#include<map>
#include<unordered_map>
#include<algorithm>
using namespace std;
template<typename T> void print(const T &container);
template<typename T> void printmap(const T &map);

int main ()
{
	
	cout<<"vector----------------------------------------\n";
	vector<int> a={3,1,2,4,7};		print(a);
	cout<<"size: "<<a.size()<<".\tcapacity: "<<a.capacity()<<".\n";	
	a.push_back(4);					print(a);
	cout<<"size: "<<a.size()<<".\tcapacity: "<<a.capacity()<<".\n";		
	a.insert(a.cbegin()+1,9);		print(a);	
	a.insert(a.cend(),2,8);			print(a);
	a.pop_back();					print(a);
	sort(a.begin(),a.end());		print(a);			//不用: cbegin(), cend()
	sort(a.begin(),a.end(),greater<int>());	print(a);	
	vector<int>::const_iterator vp=find(a.cbegin(),a.cend(),4);
	if(vp!=a.cend())
	 	cout<<"the first pos. of 4 is:\t"<< distance(a.cbegin(),vp) <<endl;
	else
		cout<<'4'<<" does not exist."<<endl;
	cout<<"the number of 4 is:\t"<< count(a.cbegin(),a.cend(),4) <<endl;
	a.erase(vp);						print(a);
	a.erase(a.cbegin()+1,a.cend()-1);	print(a);				
	a.clear();
	cout<<"\ndeque-----------------------------------------\n";
	
	deque<int> a2{1,4,7,3,5,9,8};
	a2.push_front(9);				print(a2);
	
	
	cout<<"\nlist------------------------------------------\n";
	
	list<int> b{1,4,2,7,8,3,6};		print(b);
	b.push_back(2);					print(b);
	b.insert(b.cbegin(),a.cbegin(),a.cbegin()+3);	print(b);
	b.pop_front();					print(b);
	b.remove(2);					print(b);
	b.sort();						print(b);
	cout<<"\nforward_list----------------------------------\n";
	//cout<<sizeof(double)<<endl;	
	
	forward_list<int> b2={1,2,3,7,8,3};	print(b2);
	//	/*	
	//	b2.push_back(2);			//error
	//	auto flp=b2.begin();
	//	flp++;
	//	flp--;						//error
	//	*/
	*b2.begin()=9;						print(b2);
	b2.reverse();						print(b2);
	cout<<"\nset-------------------------------------------\n";
	set<int> c={1,4,5,6,3,2,6,7,9};		print(c);
	cout<<"size: "<<c.size()<<endl;
	c.insert(8);						print(c);
	cout<<"the number of 10 is:\t"<<c.count(10)<<endl;
	c.erase(6);							print(c);
	//*c.begin()=9;		//error
	cout<<"\nmultiset--------------------------------------\n";
	multiset<int> c2={1,3,4,3,5,6,1};	print(c2);
	cout<<"the number of 3 is:\t"<<c.count(3)<<endl;
	c2.erase(3);						print(c2);	
	cout<<"\nunordered_multiset----------------------------\n";
	unordered_multiset<int> c3={1,3,4,3,5,6,1};
	print(c3);
	cout<<"Size():\t\t"<<c3.size()<<endl;
	cout<<"Bucket count:\t"<<c3.bucket_count()<<endl;
	cout<<"Max load factor:"<<c3.max_load_factor()<<endl;
	cout<<"Load factor:\t"<<c3.load_factor()<<endl;
	cout<<"\nmap-------------------------------------------\n";
	map<int,string>d={{2,"Tony"},{1,"Jack"},{3,"Lee"},{100,"Doe"},{7,"Lucy"}};
	printmap(d);
	d.insert(make_pair(3,"Wane"));
	d.insert(pair<int,string>(5,"Zen"));	
	d[8]="Tai";	//d[8]{"Tai"} or d[8]("Tai")	//error
	printmap(d);
	cout<<"\nmultimap--------------------------------------\n";
	multimap<int,string>d2;
	d2.insert(d.cbegin(),d.cend());		printmap(d2);
	d2.insert(make_pair(3,"Wane"));		printmap(d2);
	d2.erase(3);				printmap(d2);
	return 0;
}

template<typename T>
void print(const T &container)
{
	for(typename T::const_iterator cp=container.cbegin();cp!=container.cend();cp++)
		cout<<*cp<<" ";
	cout<<endl;
	//for(auto &v:v)
}
template<typename T>
void printmap(const T &map)
{
	for(auto &v:map)
		cout<<v.first<<"\t-->\t"<<v.second<<endl;
	cout<<endl;
	
}

运行结果

vector----------------------------------------
3 1 2 4 7
size: 5.        capacity: 5.
3 1 2 4 7 4
size: 6.        capacity: 10.
3 9 1 2 4 7 4
3 9 1 2 4 7 4 8 8
3 9 1 2 4 7 4 8
1 2 3 4 4 7 8 9
9 8 7 4 4 3 2 1
the first pos. of 4 is: 3
the number of 4 is:     2
9 8 7 4 3 2 1
9 1

deque-----------------------------------------
9 1 4 7 3 5 9 8

list------------------------------------------
1 4 2 7 8 3 6
1 4 2 7 8 3 6 2
9 1 7 1 4 2 7 8 3 6 2
1 7 1 4 2 7 8 3 6 2
1 7 1 4 7 8 3 6
1 1 3 4 6 7 7 8

forward_list----------------------------------
1 2 3 7 8 3
9 2 3 7 8 3
3 8 7 3 2 9

set-------------------------------------------
1 2 3 4 5 6 7 9
size: 8
1 2 3 4 5 6 7 8 9
the number of 10 is:    0
1 2 3 4 5 7 8 9

multiset--------------------------------------
1 1 3 3 4 5 6
the number of 3 is:     1
1 1 4 5 6

unordered_multiset----------------------------
1 1 3 3 4 5 6
Size():         7
Bucket count:   17
Max load factor:1
Load factor:    0.411765

map-------------------------------------------
1       -->     Jack
2       -->     Tony
3       -->     Lee
7       -->     Lucy
100     -->     Doe

1       -->     Jack
2       -->     Tony
3       -->     Lee
5       -->     Zen
7       -->     Lucy
8       -->     Tai
100     -->     Doe


multimap--------------------------------------
1       -->     Jack
2       -->     Tony
3       -->     Lee
5       -->     Zen
7       -->     Lucy
8       -->     Tai
100     -->     Doe

1       -->     Jack
2       -->     Tony
3       -->     Lee
3       -->     Wane
5       -->     Zen
7       -->     Lucy
8       -->     Tai
100     -->     Doe

1       -->     Jack
2       -->     Tony
5       -->     Zen
7       -->     Lucy
8       -->     Tai
100     -->     Doe

猜你喜欢

转载自blog.csdn.net/lituusliu/article/details/80311929