【发布时间】:2016-03-23 00:02:23
【问题描述】:
我正在为图表编写程序。在这个程序中,我有一个方法必须返回源自顶点的弱组件内的顶点。我得到:错误“向量迭代器不兼容”
struct graph {
std::vector <std::vector<int>> gr;
};
std::vector<int> weak_component(const graph& g, int vertex) {
std::vector<int> ret;
stack<int> s;
s.push(vertex);
vector<int>::iterator j;
bool* used = new bool[g.gr.size()];
while (!s.empty()) {
int hodn=s.top();
s.pop();
used[hodn] = true;
for (j == g.gr[hodn].begin(); j != g.gr[hodn].end(); j++) {
if (!used[*j]) {
s.push(*j);
ret.push_back(*j);
}
}
}
return ret;
}
这有什么问题?
【问题讨论】:
-
j == g.gr[hodn].begin();应该是j = g.gr[hodn].begin();。 -
@PeteBecker 当我删除其中一个 = 时,它表示没有运算符“=”与这些操作数匹配。
-
错误发生在哪一行?另外,您正在泄漏内存(您没有删除
used) -
这并不意味着 == 是正确的行为。 == 比较,= 赋值。如果 = 不比较,则表明有问题。正如瑞安已经指出的那样,您的类型不匹配。谁在释放“用过”的记忆?考虑 std::vector
。在 2016 年,一个原始指针应该会让你感到紧张。
标签: c++