适当的自定义类构造函数

时间:2017-07-09 20:37:07

标签: c++ class oop constructor c++03

我目前正在使用自定义对象来表示图表的节点。图只是这种对象的一个​​向量。

class node {
public:
   unsigned int vertex;
   unsigned int weight;
   bool operator< (const node &x){ return weight < x.weight; }
   bool operator> (const node &x){ return weight > x.weight; }
};

我遇到的问题是,当我需要push_back()这样的对象时,我无法提出正确的构造函数。

unsigned int u, v, w;
vector<node> G[V];
G[u-1].push_back({v-1, w}); 

这是它的唯一工作方式,但只是使用C ++ 11。有没有一种标准的方法可以做到这一点?如果我尝试使用g ++编译而不使用C ++ 11标志,我会收到错误。 我基本上试图实现 emplace_back()

编辑: 我需要使用旧版本的C ++编译我的代码

1 个答案:

答案 0 :(得分:4)

  

这是它的唯一工作方式,但只是使用C ++ 11。

这很好,因为那是现在的状态。此外,这应该适用于C ++ 14,C ++ 17等等,因此您可以放心使用。

BTW,我想G[u-1].push_back({v-1, w});只是一个样本,因为u未初始化,这很关键,更不用说其他变量了。

  

我一直在寻找“向后兼容”解决方案。

定义一个这样的构造函数,例如:

node(unsigned int v, unsigned int w) : vertex(v), weight(w) {}

然后执行:

G[u - 1].push_back(node(v-1, w));