我需要有关如何使用string和将数据插入地图的建议set<string>。我尝试了类似的方法,但是没有用:
#include <map>
#include <utility>
int main()
{
std::map<string, set<string> > mymap;
std::map<string, set<string> >::iterator it = mymap.begin();
mymap.insert ( std::pair<string, set<string> > ("car" , "orange") );
return (0);
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮我吗?先感谢您。
我不知道为什么现在避免operator[]使用地图似乎如此受欢迎,它比insert. 当然,除非细微差别(例如需要默认构造函数)导致它对您不起作用,或者您已经确定它会导致性能问题。就您的目的而言,正如您所描述的那样,它应该可以正常工作。
mymap["car"].insert("orange");
Run Code Online (Sandbox Code Playgroud)
如果集合不存在,这将构造集合,并将向其中插入一个元素。在评论中,您表达了向集合添加更多元素的愿望,并且您可以使用完全相同的语法。
mymap["car"].insert("blue");
Run Code Online (Sandbox Code Playgroud)
如果您想确保在插入前有一个新的、空的集合,您可以随时调用clear()它。
auto & car_set = mymap["car"];
car_set.clear();
car_set.insert("orange");
Run Code Online (Sandbox Code Playgroud)
两种方法:
set<string> myset;
myset.insert("orange");
//first method
mymap["car"] = myset; //will overwrite existing data!!
//second method
mymap.insert(make_pair("car", myset));
Run Code Online (Sandbox Code Playgroud)