簡體   English   中英

傳遞一個向量<vector<int> &gt; 進入 function 給出 memory 錯誤</vector<int>

[英]Passing a vector<vector<int>> into a function gives memory error

所以我在 codeforces 中編寫了一個簡單的程序,它使用 DFS 來橫向並找到從 S 到 D 的路徑。我的 DFS function 是遞歸的 function 並有兩個 ZAC68B62ABFD6A9FE26E8AC4236。

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

在第一種形式 (1.) 中,我通過代理列表 (nb) 作為 function 的論據,在第二種形式 (2.) 中,我將 nb 設為全局變量,因此我不需要將 nb 作為爭論。 但是,(1.)給了我一個 memory 限制,而選項 2 沒有。

我想知道,將 nb 作為參數傳遞是否會復制整個列表。 我建議這樣做,因為這可以解釋 memory 錯誤。 還是只是將指針地址復制到列表中? (如果是這樣,問題一定是memory緊)。

問題: https://codeforces.com/problemset/problem/500/A
解決方案 (1.) https://codeforces.com/contest/500/submission/83148365
解決方案 (2.) https://codeforces.com/contest/500/submission/83148036

這個 function:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM