如何将数据插入map <string,set <string>> C ++?

use*_*673 1 c++ string map

我需要有关如何使用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)

有人可以帮我吗?先感谢您。

Ben*_*ley 9

我不知道为什么现在避免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)


yiz*_*lez 5

两种方法:

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)

  • @RSahu如果键已经存在于映射中,则插入将不会插入,但是[]将被覆盖,因此基本上上述给出的答案是不正确的,因为问题在于如何“插入” (4认同)