首页 > 解决方案 > 传递一个向量> 进入函数给出内存错误

问题描述

所以我在 codeforces 中编写了一个简单的程序,它使用 DFS 来横向并找到从 S 到 D 的路径。我的 DFS 函数是递归函数,有两种形式。

 1. bool DFS(int u, int v, vector<vector<int>> nb)
 2. bool DFS(int u, int v)

在第一种形式 (1.) 中,我将代理列表 (nb) 作为函数的参数传递,在第二种形式 (2.) 中,我将 nb 设为全局变量,因此我不需要将 nb 作为参数传递争论。但是,(1.)给了我一个内存限制,而选项 2 没有。

我想知道,将 nb 作为参数传递是否会复制整个列表。我建议这样做,因为这可以解释内存错误。还是只是将指针地址复制到列表中?(如果是这样,问题一定是内存紧张)。

问题:https:
//codeforces.com/problemset/problem/500/A soln (1.) https://codeforces.com/contest/500/submission/83148365
soln (2.) https://codeforces.com/比赛/500/提交/83148036

标签: c++functiongraph

解决方案


这个功能:

bool DFS(int u, int v, vector<vector<int>> nb)

需要vector副本,所以是的,这可能非常昂贵。

相反,您可以vector通过引用获取参数:

bool DFS(int u, int v, vector<vector<int>> & nb)

甚至更好,通过 const 参考,如果你不想改变它:

bool DFS(int u, int v, vector<vector<int>> const & nb)

推荐阅读