是否有一个std迭代器我可以使用std算法将元素插入到std :: map中(例如std :: copy)?
我需要一个容器来将一个对象链接到一个字符串,我想到了使用std :: map.有更好的容器吗?忘了说 - 需要对物品进行分类.
Cas*_*Cow 31
我认为OP正在寻找的是 std::inserter(mymap, mymap.end())
所以你可以这样做:
std::copy( inp.begin(), inp.end(), std::inserter(mymap, mymap.end()) );
Run Code Online (Sandbox Code Playgroud)
输入类型必须是地图所采用的对类型,否则您的算法需要使用函数/函数进行std :: transform,以将输入类型转换为这样的std :: pair.
inserter实际上不是一个迭代器,而是一个生成迭代器的模板化函数(std :: insert_iterator,它是一个模板化类型,但在函数调用中会自动解析该类型).
Pra*_*rav 13
为了插入std::map你需要使用std::make_pair().
例如:
std::map<int,std::string> Map;
Map.insert(std::make_pair(5,"Hello"));
Run Code Online (Sandbox Code Playgroud)
尝试类似的东西.:)
是的,std::copy如果您将a std::insert_iterator用作OutputIterator ,则可以在地图中插入几个元素(使用辅助函数std::inserter创建这些元素;通过这种方式,可以推断出模板类型)。std :: map的“元素”是键值对,您可以使用来创建std::make_pair,如Prasoon所示。(实际类型是std::pair<Key, Value>;再次,辅助函数允许模板类型的推导。)如果您将键放在一个序列中,将值放在另一个序列中,则应该能够std::transform产生一系列键-值对。
| 归档时间: |
|
| 查看次数: |
31045 次 |
| 最近记录: |