您好我正在尝试将记录插入boost :: unordered_map
地图定义为
boost::unordered_map<int,Input> input_l1_map;
其中Input是类
class Input {
int id;
std::string name;
std::string desc;
std::string short_name;
std::string signal_presence;
std::string xpnt;
}
我使用函数插入记录,如下所示
void RuntimeData::hash_table(int id,Input input)
{
this->input_l1_map.insert(id,input);
}
我读了一个boost文档,它说一个函数insert()
将数据插入到容器中,但是当我编译它时显示错误。
答案 0 :(得分:3)
您找到insert
方法的位置?
std::pair<iterator, bool> insert(value_type const&);
std::pair<iterator, bool> insert(value_type&&);
iterator insert(const_iterator, value_type const&);
iterator insert(const_iterator, value_type&&);
template<typename InputIterator> void insert(InputIterator, InputIterator);
value_type
typedef Key key_type;
typedef std::pair<Key const, Mapped> value_type;
来自here
您应该使用this->input_l1_map.insert(std::make_pair(id, input));
答案 1 :(得分:1)
insert采用value_type,定义为:
typedef std::pair<Key const, Mapped> value_type;
void RuntimeData::hash_table(int id,Input input)
{
this->input_l1_map.insert(std::make_pair(id,input));
}
答案 2 :(得分:0)
最自然的方式,IMO,写这个将是
input_l1_map[id] = input;
Allthough
input_l1_map.insert({ id,input }); // C++11
也可以。
或者,它将是存储在地图中的对的typedef:
typedef boost::unordered_map<int,Input> InputMap;
InputMap input_l1_map;
现在你可以明确指出:
InputMap::value_type item(id, input);
input_l1_map.insert(item);