C++ 如何将数据插入地图<;字符串,set<;字符串>&燃气轮机;C++;?

C++ 如何将数据插入地图<;字符串,set<;字符串>&燃气轮机;C++;?,c++,string,map,C++,String,Map,我需要关于如何使用字符串和集将数据插入地图的建议。我试过这样的方法,但不起作用: #include <map> #include <utility> int main() { std::map<string, set<string> > mymap; std::map<string, set<string> >::iterator it = mymap.begin(); mymap.insert

我需要关于如何使用
字符串和
集将数据插入地图的建议。我试过这样的方法,但不起作用:

#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);
}
#包括
#包括
int main()
{      
std::map mymap;
std::map::iterator it=mymap.begin();
mymap.insert(std::pair(“car”、“orange”);
返回(0);
}
有人能帮我吗?先谢谢你

#include <map>
#include <set>
#include <string>

int main() {
    std::map< std::string, std::set< std::string> > mymap;
    std::set< std::string> s;
    s.insert( "orange");
    mymap.insert( std::make_pair( std::string("car") , s));
    return 0;
}
请检查此项。

两种方法:

set<string> myset;
myset.insert("orange");

//first method
mymap["car"] = myset; //will overwrite existing data!!

//second method
mymap.insert(make_pair("car", myset));
设置myset;
myset.插入(“橙色”);
//第一种方法
mymap[“car”]=myset//将覆盖现有数据!!
//第二种方法
mymap.insert(make_pair(“car”,myset));

我不知道为什么这些天避免使用
操作符[]
对于地图,它比
insert
优雅得多。当然,除非细微的差异(例如需要默认构造函数)导致它不适合您,或者您已经确定它会导致性能问题。对于您的目的,正如您所描述的,它应该可以正常工作

mymap["car"].insert("orange");
如果集合不存在,它将构造该集合,并在其中插入一个元素。在注释中,您表示希望向集合中添加更多元素,并且可以使用完全相同的语法

mymap["car"].insert("blue");
如果要确保在插入之前有一个新的空集,可以始终对其调用
clear()

auto & car_set = mymap["car"];
car_set.clear();
car_set.insert("orange");
#包括
#包括
#包括
#包括
使用名称空间std;
void insertValue(map和myMap,
字符串常量和键,
字符串常量和值)
{
//检查是否已经存在给定密钥的集合。
//如果是,请插入到现有集。
//否则,创建一个集合并将其添加到地图中。
迭代器find=myMap.find(键);
if(find!=myMap.end())
{

cout
mymap[key]=value;
?否则看起来您的
对的第二部分不是
set
。在C++11中,
mymap.insert({“car”,“orange”});
应该可以工作。问题中的代码的问题是“orange”不是集合。这些方法不是集合equivalent@lizusek,请您详细说明一下好吗?谢谢。@RSahu如果密钥已经存在于地图中,insert将不会插入,而是[]将覆盖,所以上面给出的答案基本上是不正确的,因为问题是关于如何“插入”谢谢你的答案,这对我很有帮助,但我还有一个问题。如果我想添加下一个要设置的字符串?这不起作用:/@user3421673请查看更新的答案除了输出语句之外,还有你的
insertValue
函数实现了与简单操作完全相同的功能:
mymap[key].insert(value);
这是它所能实现的最优雅的功能,但是我要使用
insert
而不是
操作符[]
,如果该键已经存在于映射中,该怎么做?
auto & car_set = mymap["car"];
car_set.clear();
car_set.insert("orange");
#include <map> 
#include <set>
#include <string>
#include <iostream>

using namespace std;

void insertValue(map<string, set<string> >& myMap,
                 string const& key,
                 string const& value)
{
   // Check whether there is already a set given the key.
   // If so, insert to the existing set.
   // Otherwise, create a set and add it to the map.
   map<string, set<string> >::iterator found = myMap.find(key);
   if ( found != myMap.end() )
   {
      cout << "Adding '" << value << "' to an existing set of " << key << "s.\n";
      found->second.insert(value);
   }
   else
   {
      cout << "Adding '" << value << "' to a new set of " << key << "s.\n";
      set<string> temp;
      temp.insert(value);
      myMap.insert(make_pair(key, temp));
   }
}

int main()
{
   map<string, set<string> > mymap;
   insertValue(mymap, "car", "orange");
   insertValue(mymap, "car", "blue");
   insertValue(mymap, "car", "red");
   insertValue(mymap, "truck", "orange");
   insertValue(mymap, "truck", "blue");
   return 0;
}