【发布时间】:2018-02-07 17:22:11
【问题描述】:
所以,我已经使用邻接表制作了一个图形,并且我正在尝试使用递归来搜索它。收到一条尴尬的错误消息,说“与运算符 [] 不匹配”。代码如下:
#include <iostream>
#include <vector>
using namespace std;
void search(vector <int> *v,int node)
{
if (node==4)
{
cout<<"found 4";
return;
}
vector <int> :: iterator it;
if (!v[node].empty())
{
for (it=v[node].begin() ; it!=v[node].end() ; it++)
{
search(v,v[node][it]);
}
}
}
int main()
{
vector <int> v[5];
v[1].push_back(2);
v[1].push_back(3);
v[2].push_back(4);
v[2].push_back(5);
search (v,1);
}
【问题讨论】:
-
v不是std::vector。这是一个指针。指针也恰好支持[index]语法,但要正确执行,最好先取消对指针的引用。 -
更改:
vector <int> *v-->vector <int> &v -
您将
vector <int> *作为指针参数传递,所以您必须将其引用为调用operator[]()函数。 -
v[node][it]:这里的it是一个迭代器。它不是一个索引。你不能把它放在方括号内。 -
它现在可以工作了。我已将其更改为 v[ node ] [*it ] 。谢谢。