代码之家  ›  专栏  ›  技术社区  ›  fedemengo

自定义类的适当构造函数

  •  1
  • fedemengo  · 技术社区  · 7 年前

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

    我面临的问题是,当我需要推回()这样的对象时,我无法找到合适的构造函数。

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

    这是它工作的唯一方式,但只适用于C++11。有标准的方法吗?如果我尝试在不使用C++11标志的情况下使用g++编译,我会出错。 emplace_back() .

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

    1 回复  |  直到 7 年前
        1
  •  4
  •   gsamaras a Data Head    7 年前

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


    顺便说一句,我想 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));