C ++在Map中的类的一组值中插入一个值

时间:2017-11-29 15:58:28

标签: c++ class c++11 dictionary set

我的班级Cjt_Trets中有一张地图,其中包含一个名为rasgo的字符串和一个名为Trets的类。在Trets中,我有一个set<int> id;,其中包含id个包含rasgo的人。当我尝试将函数接收的id插入到该集合中时,我的问题出现了。我该怎么办呢?

这里我留下部分代码,可以帮助您了解我的情况:

Cjt_Trets类的私人:

private:
  map<string, Trets> mtrets;  
};

Private of Trets:

private:
  set<int> id;
  string gen;  
};

代码的实际部分我不知道该怎么做:

void Cjt_Trets::afegir_tret(int id, string rasgo){    
  mtrets.insert( make_pair<string, Trets> (rasgo, Trets.id.insert(id)) );
}

2 个答案:

答案 0 :(得分:0)

由于你有一个班级Trets,你不能Trets.id,因为id是班级的非静态成员,即使它是,你也可以通过致电Trets::id来访问它。但是,要在std::map<string, Trets>中插入内容,您需要Tretsstd::set::insert的对象,std::pair<iterator, bool>返回Trets,因此您需要创建或从某个地方接收std::map的实际对象,以便能够将其插入overflow

答案 1 :(得分:-1)

我认为这样的事情应该有效:

void Cjt_Trets::afegir_tret(int id, string rasgo){    
    auto it = mtrets.find(rasgo) ;  // is rasgo already ion the map?
    if (it == mtrets.end())         // if not insert an empty Trets
        it = mtrets.insert(make_pair(rasgo, Trets()).first ;
    // Now insert the id in the Trets referring to this rasgo
    // TODO it->second is of type Trets and id is private member
    // this needs to be fixed
    it->second.id.insert(id) ; 
}