自定义 class 的正确构造函数
Proper constructor for custom class
我目前正在使用自定义对象来表示图形的节点。该图只是此类对象的向量。
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。有没有标准的方法来做到这一点?如果我尝试在不使用 C++11 标志的情况下使用 g++ 进行编译,则会出现错误。
我基本上是在尝试实现 emplace_back().
编辑:
我需要用旧版本的 C++ 编译我的代码
This is the only way it works, but just with C++11.
这很好,因为这是当前状态。此外,这可能适用于 C++14、C++17 等,因此你是安全的。
顺便说一句,我猜 G[u-1].push_back({v-1, w});
只是一个样本,因为 u
是未初始化的,这很关键,更不用说其他变量了。
I was looking for a "backward compatibility" solution.
定义一个构造函数,例如:
node(unsigned int v, unsigned int w) : vertex(v), weight(w) {}
然后做:
G[u - 1].push_back(node(v-1, w));
我目前正在使用自定义对象来表示图形的节点。该图只是此类对象的向量。
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。有没有标准的方法来做到这一点?如果我尝试在不使用 C++11 标志的情况下使用 g++ 进行编译,则会出现错误。 我基本上是在尝试实现 emplace_back().
编辑: 我需要用旧版本的 C++ 编译我的代码
This is the only way it works, but just with C++11.
这很好,因为这是当前状态。此外,这可能适用于 C++14、C++17 等,因此你是安全的。
顺便说一句,我猜 G[u-1].push_back({v-1, w});
只是一个样本,因为 u
是未初始化的,这很关键,更不用说其他变量了。
I was looking for a "backward compatibility" solution.
定义一个构造函数,例如:
node(unsigned int v, unsigned int w) : vertex(v), weight(w) {}
然后做:
G[u - 1].push_back(node(v-1, w));