C++ STL 学习笔记-关联容器 set/multiset、map/multimap简单使用方法及注意事项

set/multiset

     set内部元素依据其值自动排序,每个元素只能出现一次不能重复,multiset与set相同,只不过允许元素重复

1. 底层数据结构: 红黑树.

2. 支持的函数:

  insert()    插入元素

  clear()     清空元素

  erase()    删除元素

  empty()   为空返回1,不为空返回0

  find()       查找函数

#include "stdafx.h"
#include 
#include 
using namespace std;
using std::set;
using std::cout;
typedef set _Set;
typedef multiset _MSet;
typedef set::iterator _It;
typedef multiset::iterator _MIt;
void printSet(_Set s)
{
	for(_It it = s.begin(); it != s.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
	_Set iset;
	//_MSet iset;
	//_MIt it;
	_It it;
	iset.insert(5);
	iset.insert(8);
	iset.insert(9);
	iset.insert(50);
	iset.insert(39);
	iset.insert(9);

	printSet(iset);
	it = iset.find(8);
	if(it != iset.end())
	{
		cout << "find 8" << endl;
		iset.erase(it);
	}
	cout << endl;
	printSet(iset);
	iset.clear();
	if(iset.empty())
	{
		cout << "is empty" <

map/multimap

      map元素是键值对(key/value),每个元素都有一个键,是排序的基础,每个键只能出现一次,不允许重复,mutimap与map相同,只不过允许重复

1.底层数据结构:红黑树

2.支持的函数:

  insert()    插入元素

  clear()     删除元素

  erase()    删除元素

  empty()   为空返回1,不为空返回0

  find()       查找函数

#include "stdafx.h"
#include 
#include 
using namespace std;
using std::map;
using std::cout;
struct ltstr
{
	bool operator()(const char* s1,const char* s2) const
	{
		return strcmp(s1,s2) < 0;
	}
};
typedef map mapContainer;
typedef map::iterator mapiter;
void printMap(mapContainer m)
{
	for(mapiter it = m.begin(); it != m.end(); it++)
	{
		cout <<"["<first <<","<< it->second <<"]"<< endl;
	}
}

int _tmain(int argc, _TCHAR* argv[])
{
	  mapContainer m;
	  mapiter it;
   m.insert(pair("Lily",29));
   m.insert(pair("Lucy",19));
   m.insert(map::value_type("Mack",50));
   m["jack"] = 3;
   printMap(m);
   m.erase("Lily");
   printMap(m);
   it = m.find("Lucy");
   if(it != m.end())
   {
	   cout << "found lucy" << endl;
   }
    return 0;
}

 

你可能感兴趣的:(C++,STL,set,map,multiset,multimap)