【发布时间】:2016-05-07 16:41:21
【问题描述】:
我有课:
template <typename _T, typename _E>
class CRoute
{
public:
CRoute& Add(const _T & u1 , const _T & u2 , const _E & e);
...
private:
map < _T, vector<pair<_T,_E>> > graf;
};
添加函数必须将元素分配给graf;
但是!我不能使用 _T 和 _E 类型的默认构造函数。因此,我无法执行以下操作:
template <typename _T, typename _E>
CRoute<_T,_E>& CRoute<_T,_E>::Add(const _T & u1 , const _T & u2 , const _E & e){
graf[u1].emplace_back( u2 , e );
return *this;
}
我只能使用复制构造函数。 我怎样才能做到?
【问题讨论】:
-
您的
graf映射的键值对是std::pair<_T, std::vector<std::pair<_T, _E>>,您正在尝试插入std::pair<_T, std::pair<_T, _E>>。
标签: c++ dictionary insert std-pair emplace