【发布时间】:2023-03-18 08:24:01
【问题描述】:
假设我有一个可以轻松表达键值语义的类:
template <class T1, class T2>
struct data_t{
T1 m1;
T2 m2;
};
从此类结构的向量中创建无序映射的最有效方法是什么?
我的方法
我试图为我的班级定义一个转换运算符
operator std::pair<T1, T2> () { return {m1, m2}; } // typo noted by PasserBy
但这似乎不起作用
std::vector<data_t> v;
std::unordered_map<T1, T2> um(v.begin(), v.end()); // compilation error
我的特定用例有一个指针类型T1 和一个值类型T2,所以我想不需要定义散列函数(?)。另外,我尝试通过转换运算符执行此操作的原因是能够以相同的方式将元素添加到该无序映射:
um.insert(itn, ite); // insert from a range of the source vector
【问题讨论】:
标签: c++ unordered-map