c++ - 如何在 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));
}
解决方案
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
,不要这样做,它会在某些时候给你带来问题。
推荐阅读
- python - mitmproxy 独立脚本?
- android - 在 Android 中使用自定义区域设置膨胀视图
- c# - “可重试”请求和 CancellationToken/CancellationTokenSource
- android - 如何在 Android 中设计重叠元素?
- c# - 双向映射
- cmake - Cmake sub_directory,需要构建libs依赖项
- javascript - 如何从应用程序/八位字节流数据创建文件?
- netlogo - 将海龟移动到具有 xy 坐标的特定补丁 netlogo
- javascript - 使用 HTML 和 CSS 的导航栏中的子菜单大小
- python - Python opencv imwrite 不会将图像保存到目的地