• c++ map 官方样例


    #include <iostream>
    #include <string>
    #include <iomanip>
    #include <map>
    
    template<typename Map>
    void print_map(Map& m)
    {
        std::cout << '{';
        for(auto& p : m)
            std::cout << p.first << ":" << p.second << ' ';
        std::cout << '}'<<std::endl;
    }
    struct Point
    {
            double x, y;
    };
    struct PointCmp
    {
            bool operator()(const Point& lhs, const Point& rhs) const
            {
                return lhs.x < rhs.x;
            }
    };
    
    int main()
    {
        using namespace std;
        //freopen("d://1.text", "r", stdin);
        //default constructor
        std::map<std::string, int> map1;
        map1["something"] = 69;
        map1["anything"] = 199;
        map1["that thing"] = 50;
        std::cout << "map1= ";
        print_map(map1);
    
         //range constructor
        //从anything到结尾
         map<string, int> iter(map1.find("anything"), map1.end());
         cout << "
    iter= ";
         print_map(iter);
         cout << "map1= ";
         print_map(map1);
    
         //copy construct
         map<string, int> copied(map1);
         cout << "
    copied= ";
         print_map(copied);
         cout << "map1 = ";
         print_map(map1);
    
         //move construct
         map<string, int> moved(std::move(map1));
         cout<<endl<<"moved = "; print_map(moved);
         cout<<"map1 = ";print_map(map1);
    
         //initalizer list constructor
         const map<string,int> init{
             {"this",100},
             {"can",100},
             {"be",100},
             {"const",100},
         };
         cout<<"
    init = ";print_map(init);
    
         //custom key class option 1;
         //use a comparison struct
         map<Point,double,PointCmp>mag =
         {
                 {{5,-12},13},
                 {{3,4},5},
                 {{8,-15},17}
         };
         for(auto p:mag)
             cout<<"The magnitude of("<<p.first.x
             <<", "<<p.first.y<<") is "
             <<p.second<<endl;
    
         //Custom Key class option 2:
         //use a comparison lambda
         //This lambda sorts points according to their magnitudes, where note that
         // these magnitudes are taken from the local variable mag
         //声明一个比较器
         auto cmplambda =
                 [&mag](const Point &lhs,const Point& rhs){return mag[lhs] < mag[rhs];};
         //you could also use a lambda that is not dependent on local variables,like this:
         //auto cmpLambda= [](const Point& lhs,const Point& rhs){return lhs.y < rhs.y;};
         map<Point,double,decltype(cmplambda)>magy(cmplambda);
    
         //various ways of inserting elements:
         magy.insert(pair<Point,double>({5,-12},13));
         magy.insert({{3,4},5});
         magy.insert({Point{-8.0,-15.0},17});
         cout<<"
    ";
         for(auto p :magy)
         {
             cout<<"The magnitude of {"<<p.first.x
                     <<". "<<p.first.y<<") is "
                     <<p.second<<"
    ";
         }
         map<Point,double>::iterator it;
         //use iterator
         cout<<'
    ';
         for(it=magy.begin();it!=magy.end();it++)
         {
             cout<<"The magnitude of {"<<it->first.x
                             <<". "<<it->first.y<<") is "
                             <<it->second<<"
    ";
         }
    
        return 0;
    }

     原文地址:https://en.cppreference.com/w/cpp/container/map/map

  • 相关阅读:
    小程序苹果手机上video会盖住绝对定位的view层,小程序 video 层级,原生组件
    两个高斯分布乘积的理论推导
    两个高斯分布的和的分布——正态分布的再生性
    随机变量、随机向量和随机有限集的定义
    UdpClient.BeginReceive(AsyncCallback, Object) 方法
    基于C#的UDP协议的异步实现
    基于C#实现串口通信Demo
    pitch、yaw、roll三个角的区别
    dotNET Core 3.X 使用 Jwt 实现接口认证
    C#使用RabbitMQ
  • 原文地址:https://www.cnblogs.com/shuiyonglewodezzzzz/p/9348472.html
Copyright © 2020-2023  润新知