STL-------map与multimap

map(映射)  \    multimap(多映射)

红黑树(数据结构 )

基本操作

  insert: 4种方法

  count和find

  erase:3重方法


***注意:不能通过find进行修改!

#include <iostream>
#include <map>
#include <string>

using namespace std;

int main( int argc, char** argv )
{
	map<int, string> m;
	map<string,int> mapGrade;
	multimap<int, string> mMap;

	//                                     key   value
	m.insert( map<int,string>::value_type(1, "One"));
	m.insert(map<int,string>::value_type(2, "Two"));
	m.insert(map<int,string>::value_type(3, "Three"));
	//m.insert(make_pair(1,"One"));
	//m.insert(make_pair(2,"Two"));
	//m.insert(make_pair(3,"Three"));

	m.insert(make_pair(-1,"Minus One"));
	m.insert(pair<int,string>(1000,"One Thousand"));
	m[1000000] = "One Million";
	cout<<"map find:"<<endl;
	cout<<m[3]<<endl;
	cout<<"map total:"<<m.size()<<endl;

	mapGrade.insert(make_pair("zhang", 99));
	mapGrade.insert(map<string,int>::value_type("yang", 99));
	mapGrade.insert(pair<string,int>("hua", 100));
	mapGrade["sss"] = 1000;
	
	map<int,string>::const_iterator citr;
	for( citr = m.begin(); citr != m.end(); ++citr)
	{
		cout<<"key:"<<citr->first;
		cout<<" value:"<<citr->second<<endl;
	}

	mMap.insert(multimap<int,string>::value_type(1, "One"));
	mMap.insert(multimap<int,string>::value_type(2, "Two"));
	mMap.insert(make_pair(-1, "minus One"));
	mMap.insert(pair<int,string>(1000, "One Thousand"));
	mMap.insert(pair<int,string>(1000, "One2 Thousand"));
	cout<<"multimap size:"<<mMap.size()<<endl;

	multimap<int,string>::const_iterator itr;
	for( itr=mMap.begin(); itr!=mMap.end(); ++itr )
	{
		cout<<"key:"<<itr->first;
		cout<<"  value:"<<itr->second<<endl;
	}
	cout<<"multimap has"<<mMap.count(1000)<<"  1000"<<endl;

	multimap<int,string>::const_iterator itrFind;
	itrFind = mMap.find(1000);
	if( mMap.end()  != itrFind )
	{
		size_t n = mMap.count(1000);
		for(size_t i=0; i<n; ++i)
		{	
			cout<<"find"<<"  "<<itrFind->first<<itrFind->second<<endl;
			++itrFind;
		}
	}else{
		cout<<"not find"<<endl;
	}
	//delete
	if(mMap.erase(-1)>0)
		cout<<"delete -1 success"<<endl;
	//delete2
	multimap<int,string>::iterator itrDelete;
	itrDelete = mMap.find(2);
	if( itrDelete != mMap.end() )
	{
		mMap.erase(itrDelete);
		cout<<"delete 2 success"<<endl;
	}
	//delete3
	mMap.erase(mMap.lower_bound(1000),mMap.upper_bound(1000));

	return 0;
}



posted @ 2015-03-02 18:49  SandKing  阅读(5)  评论(0)    收藏  举报  来源