STL:map

1. map是标准的关联式容器,它提供了快速检索能力,在一个map中key值是唯一的。map提供了双向迭代器:iterator和reverse_iterator(rbegin(),rend());

2. map要求能对key进行'<'操作,即保持key值递增有序,如果不需要保证元素有序,可以采用hash_map;

int main()
{
	map, int> mapContainer;
	mapContainer.insert(make_pair(pair(1,2), 5));
	mapContainer.insert(make_pair(pair(0,4), 6));

	map, int>::iterator iter = mapContainer.begin();
	cout<<(iter->first).first<<" "<<(iter->first).second<

3. map的插入方法:insert()和[ ]。

insert方法的返回值是pair,如果键重复则插入失败,bool返回false,若成功iterator指向插入的map,bool返回true;与[ ]插入失败的区别是:它不会覆盖以前的值,而[ ]会。

map.insert(make_pair(x,y));

4.map的查找:count和find。

count是寻找关键字是否在map中出现,出现则返回1,否则返回0;缺点是:不能定位该关键字在元素中的作用;

find不但能寻找关键字是否存在,还能定位其位置;返回一个迭代器,如果未找到,则返回end函数迭代器;

int main()
{
	map mapVec;
	mapVec[1] = 4;
	mapVec[4] = 67;
	mapVec.insert(make_pair(8,6));
	
	int flag = mapVec.count(4);

	map::iterator iter = mapVec.find(4);
	cout<first<<" "<second<

5.map的排序

map默认有less函数,但是当有自定义类作为键的时候,需要自己重载‘<’符号;

struct Student
{
	int id;
	double score;
	Student(int i=0, double sc=0):id(i),score(sc){}

	//error C2678: binary '<' : no operator defined which takes a left-hand operand of type 'const struct Student' 
	bool operator < (const Student &stu) const   //记住,最后一个const必须加,不然出现上述错误。
	{
		return score < stu.score; 
	}
};





你可能感兴趣的:(STL,map,stl)