map容器的基本操作

map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处。STL的map底层是用红黑树实现的,查找时间复杂度是log(n);

1.插入元素(四种):

首先肯定要 #include<map>, 然后又定义一个

map<int,string> m;
pair<map<int,string>::iterator,bool> pair_1 

  (1)   pair1 = m.insert(pair<int,string>(1,"OC1"));                   //保存insert()的返回值 

  (2)   m.insert(make_pair(2,"OC2"));                                      //插入失败,不会产生覆盖

  (3)   m.insert(map<int,string>::value_type(3,"OC3"));

  (4)  m[4] = "OC4"                                                                   //假如key的值与m[ ? ]中的值相同,则改变其string    

**遍历方法(2种):

1.

	for (map<int,string>::iterator it = m.begin();it!=m.end();it++)
	{
		cout<<(*it).first<<endl;
		cout<<(*it).second<<endl;
	}
	

2. 

while (!m.empty())
	{
		map<int,string>::iterator it = m.begin();
		cout<<it->first<<"\t"<<it->second<<endl;
		m.erase(it);
	}

2.删除元素:

(1)指定元素删除:

    map<int, int>::iterator it = m.begin();
	for ( ; it != m.end();)
	{
		if (it->second == 1)
			it = m.erase(it);//or m.erase(it++);
		else
			++it;
    }

  (2)查找出map中的value,而删除其key

 map<int, string>::iterator it;
    it = m.find(1);
    m.erase(it);

(3)全删map:

m.earse(m.begin(),m.end())

emmmmmm,当然清空map也可以用 clear()  ;

3.元素查找:

一般都是需要遍历

    it = m.find(1);
    if(it != m.end())
    {
        Cout<<”找到了”<<it->second<<endl;
        it++;    
    }
    else
    {
        Cout<<”没有找到”<<endl;
        it++;
    }

4.map的大小:

int s = m.size()

 

 

posted @ 2023-01-20 23:30  金鳞踏雨  阅读(23)  评论(0编辑  收藏  举报  来源