【问题标题】:How to construct object from initializer list of pairs?如何从对的初始值设定项列表构造对象?
【发布时间】:2019-04-07 02:23:08
【问题描述】:

在这段代码中,我尝试使用对(int,pair(string,string))的 initializer_list 初始化类对象,但在初始化 map(int,pair(string,string)类型的类成员 map2 时出错)。

这是我的代码

#include <iostream>
#include <string>
#include <initializer_list>
#include <map>
using namespace std;

class contact{
private:

        map <int,pair<string,string>> map2;

public:

    contact(initializer_list<pair<int,pair<string,string>>> m):map2(m){}
    void display(){
        for (const auto& it:map2){
            cout<<it.first;
        }
    }
};

int main() {
    contact obj{
        make_pair(4,make_pair("parul","agrawal")),
        make_pair(5,make_pair("keshav","agrawal")),
    };

    obj.display();
    return 0;
}

【问题讨论】:

    标签: c++ c++11 stl


    【解决方案1】:

    地图元素有const 键。

    改变

    contact(initializer_list<pair<int, pair<string, string>>> m) : map2(m) {}
    

    contact(initializer_list<pair<const int, pair<string, string>>> m) : map2(m) {}
    

    顺便说一句,你也可以放弃make_pair()

    contact obj
    {
        {4, {"parul", "agrawal"}},
        {5, {"keshav", "agrawal"}},
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-24
      • 2011-04-08
      • 1970-01-01
      • 1970-01-01
      • 2020-09-21
      • 2020-12-01
      • 2011-10-17
      相关资源
      最近更新 更多