[英]Getting the warning: ' In function ‘void dfs(int)’ Warning: comparison between signed and unsigned integer expressions'
我正在研究一個簡單的 DFS 問題,我必須返回與其父節點相比具有更多子節點的相應子節點的數量(子節點>父節點:Count++)。
我一直面臨標題中提到的問題,但我無法解決它。 我也使用了 unsigned int ,但無濟於事。 我對這個問題的邏輯很清楚,但對編碼來說相當陌生,因此面臨諸如此類錯誤的困難。 我將只在下面附上我的 DFS function,問題似乎正在發生。 請幫我解決一下這個。 (使用鄰接表)
vector<int> adj[100001];
bool visited[100001]={false};
int parent=0;
int child=INT_MAX;
int counterr=0;
/*Recursive DFS:*/
void dfs(int s){
child=adj[s].size()-1;
if(child>parent)
counterr++;
if(s==1)
parent=adj[s].size();
else
parent=adj[s].size()-1;
visited[s]=true;
for(int i=0;i<adj[s].size();i++)
{
if(visited[adj[s][i]==false])
dfs(adj[s][i]);
}
}
在大多數情況下,您可以忽略這一點。 但是,如果您的 integer 超過正常的 integer 限制,或者您的 adj[s] 向量為空,這可能會成為問題。 如果父母從不消極,你可以改變這條線
int parent;
至
unsigned int parent;
這將完全阻止此警告。
for(int i=0;i<adj[s].size();i++)
您收到此警告是因為adj[s].size()
未簽名 integer,但i
已簽名。
要修復該警告,請改用此警告,然后i
變得未簽名。
for (size_t i=0; i < adj[s].size(); i++)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.