制作地图双对

问题描述 投票:-1回答:1

我有课:

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;
}

我只能使用复制构造函数。我该怎么做?

c++ dictionary insert std-pair emplace
1个回答
0
投票

您可以从std::map::emplace_back获取灵感并使用自己的Add函数以相同的方式工作,参与构建_T_E对象,而不是已经构造的那些对象的实例。

否则,您唯一的选择是采用右值参考,并希望您的类型是可移动的。

© www.soinside.com 2019 - 2024. All rights reserved.