如何将数据插入地图<字符串,设置<string>> C++?
How to insert data into map<string, set<string> > C++?
我需要关于如何使用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);
}
有人能帮我吗?提前谢谢。
我不知道为什么现在地图上不使用operator[]
看起来如此流行,它比insert
优雅得多。当然,除非这些细微的差异(例如对默认构造函数的需要(导致它不适合您,或者您已经确定它会导致性能问题。就您的目的而言,正如您所描述的,它应该可以正常工作。
mymap["car"].insert("orange");
如果集合还不存在,这将构造集合,并在其中插入一个元素。在注释中,您表示希望向集合中添加更多元素,并且可以使用完全相同的语法。
mymap["car"].insert("blue");
如果你想在插入之前确保你有一个新的、空的集合,你可以随时在上面调用clear()
auto & car_set = mymap["car"];
car_set.clear();
car_set.insert("orange");
两种方法:
set<string> myset;
myset.insert("orange");
//first method
mymap["car"] = myset; //will overwrite existing data!!
//second method
mymap.insert(make_pair("car", myset));
#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;
}
向现有std::set
添加新元素:
//add string to set identified by key "car"
if ( mymap.find( "car") != mymap.end()) {
std::set< std::string>& s_ref = mymap[ "car"];
s_ref.insert( "blue");
}
请查看这个在线示例。
#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;
}
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- 如何防止clang格式在流运算符调用之间添加换行符<<
- <<操作员在下面的行中工作
- EASTL矢量<向量<int>>连续的
- C - 创建矢量&lt; vector&lt; double&gt;&gt;矩阵具有分配而不是inizializ
- 为什么将此对向量&lt; map&lt; int,int&gt;&gt;中的地图进行更新.失败
- C :对矢量进行排序&lt; struct&gt;(结构有2个整数)基于结构的整数之一
- 明确的专业化“ CheckIntmap&lt;&gt;”实例化
- 什么是模板&lt;&gt;inline bla bla
- 编辑C Qlist&lt; object*&gt; gt;QML代码和一些QML警告中的模型
- eigen :: llt&lt;eigen :: matrixxd&gt;具有不完整的类型
- 错误,包括&lt; ctype&gt;在原子上使用C 11
- std::vector<;uint8_t>;当C++11/14启用时,手动复制而不是调用memcpy
- 如何加入向量&lt; int&gt;到C 中的单个INT
- 是std :: set&lt; std :: future&gt;不可能存在
- 是numeric_limits&lt; int&gt; :: is_modulo从逻辑上矛盾
- opencv 2.4.7在iOS错误背景_segm.hpp #include&lt; list&gt;未找到
- 在修改列表后,std :: list&lt; t&gt; :: end()的值是否会更改
- ///<评论></评论>在Visual Studio中