【发布时间】:2018-01-23 12:31:53
【问题描述】:
在下面的代码中,在基于 Group1 和 Group2 将元素插入映射后,我使用 equal_range 将多映射键与关联值分组。 根据我的要求,我需要根据以下格式的键值关联在 API 接口中设置这些值。
即
{"group1","pointcloud_min_z", "int_t","24"};
{"group1","pointcloud_max_z", "bool_t","true"};
{"group2","pointcloud_max_z", "double_t","13"};
{"group2","pointcloud_min_z", "double_t","20.0"};
现在的问题是如何根据多个分组的关键数据创建表。在这种情况下,列将始终保持不变,但基于多图行中的数据插入/删除将被添加/删除。这里 group1 和 group2 是键。请建议选择容器和将组转换为表格的方法。
代码 sn-p
#include <iostream>
#include <string>
#include <map>
using namespace std;
typedef multimap<string, string> StringToIntMap;
typedef StringToIntMap::iterator mapIter;
int main ()
{
StringToIntMap mymap;
mymap.insert(make_pair("Group2", "pointcloud_max_z"));
mymap.insert(make_pair("Group1", "pointcloud_min_z"));
mymap.insert(make_pair("Group2", "double_t"));
mymap.insert(make_pair("Group1", "int_t"));
mymap.insert(make_pair("Group2", "13"));
mymap.insert(make_pair("Group1", "pointcloud_min_z"));
mymap.insert(make_pair("Group2", "pointcloud_min_z"));
mymap.insert(make_pair("Group1", "bool_t"));
mymap.insert(make_pair("Group1", "true"));
mymap.insert(make_pair("Group1", "pointcloud_min_max_z"));
cout << "mymap contains:" << endl;
mapIter m_it, s_it;
for (m_it = mymap.begin(); m_it != mymap.end(); m_it = s_it)
{
string theKey = (*m_it).first;
cout << endl;
cout << " key = '" << theKey << "'" << endl;
pair<mapIter, mapIter> keyRange = mymap.equal_range(theKey);
// Iterate over all map elements with key == theKey
for (s_it = keyRange.first; s_it != keyRange.second; ++s_it)
{
cout << " value = " << (*s_it).second << endl;
}
}
return 0;
} // end main
enter code here
【问题讨论】: