首页 > 解决方案 > 如何在 C++ 中为 2D 向量做构造函数?

问题描述

我尝试使用构造函数以 3 种不同的方式初始化 2D 向量,但总是得到一个

"error: no matching function to call"

你能告诉我哪里错了吗?

class Node 
{
public:
  int to;
  int length;
  Node(int to, int length) : to(to), length(length){}
};

class Graph 
{
public:
  vector<vector<Node>> nodes_list;
  int n;
  Graph();
};

Graph::Graph(){
  nodes_list = vector<vector<Node> >(n, vector<Node>(n,0x3fffffff));
}

标签: c++c++11multidimensional-arrayconstructorstdvector

解决方案


vector<Node>(n,0x3fffffff);

(大致)相当于:

vector<Node> v;
for ( size_t i = 0; i < n; i++ )
{
   v.push_back(Node(0x3fffffff));
}

由于您的Node类没有采用单个整数的构造函数,因此无法编译。正确的代码是:

vector<Node>(n,Node(0x3fffffff,0));

顺便说一句,我假设你using namespace std;的标题中有Graph,不要这样做,它会在某些时候给你带来问题。


推荐阅读