• C++ map用法


    C++ map用法

    map是STL的一个关联容器,它提供一对一(其中关键字只能在map中出现一次)的数据处理能力。

    1. 必须引入
    #include<map>
    
    1. map的定义

      map<type1name, type2name> maps;//第一个是键的类型,第二个是值的类型

      map<string, int> maps;
      
      //也可以这样,需要C++11及以后支持
      ::map<int, string> maps = {
      		{2323, "sdff"},
      	{23322, "sdfsf2"},
      	{23211, "sdfsf"}
      	};
      
    2. map容器内元素的访问

      • 通过下标进行访问

        如: maps["c"] = 4;

      • 通过迭代器进行访问

        map可以使用it->first来访问键,使用it->second访问值

        #include <iostream>
        #include<map>
        #include<string>
        using namespace std;
        
        int main()
        {
        	::map<char, int> maps;
        	maps['d'] = 10;
        	maps['e'] = 20;
        	maps['a'] = 30;
        	maps['b'] = 40;
        
        	for (auto it = maps.begin(); it != maps.end(); it++)
        	{
        		cout << it->first << ":" << it->second << endl;
        	}
        	int c = ::getchar();
        }
        
    3. map的常用用法

      • maps.insert()插入

        #include <iostream>
        #include<map>
        #include<string>
        using namespace std;
        
        int main()
        {
        	// 定义一个map对象
        	::map<int, string> maps;
        	
        	// 用insert函数插入pair
        	maps.insert(::make_pair<int, string>(11, "sdf"));
            
        	auto res = maps.insert(std::make_pair<int, string>(2323, "sdfs"));
        	if (res.second) //插入成功
        	{
        
        	}
        	// 用insert函数插入value_type数据
        	maps.insert(::map<int, string>::value_type(22, "sdf3"));
        
        	maps[123] = "sdfsfsdf";
        	maps[33] = "测试";
        	for (auto it = maps.begin(); it != maps.end(); it++)
        	{
        		cout << it->first << ":" << it->second << endl;
        	}
        	int c = ::getchar();
        }
        
      • maps.find()查找一个元素

        #include <iostream>
        #include<map>
        #include<string>
        using namespace std;
        
        int main()
        {
        	// 定义一个map对象
        	::map<int, string> maps;
        	
        	// 用insert函数插入pair
        	maps.insert(::make_pair<int, string>(11, "sdf"));
        
        	// 用insert函数插入value_type数据
        	maps.insert(::map<int, string>::value_type(22, "sdf3"));
        
        	maps[123] = "sdfsfsdf";
        	maps[33] = "测试";
        	
        	auto f = maps.find(123);
        	if (f != maps.end()) //如果不等于end(),则表示找到了
        	{
        		cout << f->first << ":" << f->second << endl;
        	}
        	int c = ::getchar();
        }
        
      • maps.clear()清空

      • maps.erase()删除一个元素

        //迭代器删除
        	auto it = maps.find(123);
        	if (it != maps.end())
        	{
        		maps.erase(it);
        	}
        	
        	//关键字删除
        	int n = maps.erase(123); //如果删除了返回1,否则返回0
        
        	// 用迭代器范围删除
        	maps.erase(maps.begin(), maps.end());
        
      • maps.size()长度

      • maps.begin()返回指向map头部的迭代器

      • maps.end()返回指向map末尾的迭代器

      • maps.rbegin()返回指向map尾部的逆向迭代器

      • maps.rend()返回指向map头部的逆向迭代器

      • maps.empty()判断是否为空

      • maps.swap()交换两个map

  • 相关阅读:
    Log4Net详解(2)结构篇
    vs2012中使用Spring.NET报错:Spring.Context.Support.ContextRegistry 的类型初始值设定项引发异常
    vs2010无法打开项目文件的解决方法
    Spring.NET使用assembly方式设置配置文件
    WebService生成XML文档时出错。不应是类型XXXX。使用XmlInclude或SoapInclude属性静态指定非已知的类型。
    [转贴]如何做好一个垂直搜索引擎
    怎样预防RSI呢?
    推荐一个打折的站点
    五子棋程序
    共享两本C++的好书
  • 原文地址:https://www.cnblogs.com/zzr-stdio/p/14434996.html
Copyright © 2020-2023  润新知