-2

我有线

while (prefix_length < 3 && equal(*vec1++, *vec2++)) prefix_length++;

,但是当我运行该行时,出现错误

no 'operator++(int)' declared for postfix '++' [-fpermissive].

代码有什么问题?

4

2 回答 2

2

如果vec1vec2vectors,它们没有自增运算符。它们是容器。您需要使用迭代器来遍历它们。就像是:

auto it1 = vec1.cbegin(),
     it2 = vec2.cbegin();
while ( prefix_length < 3
        and it1!=vec1.cend()
        and it2!=vec2.cend()
        and equal(*it1++, *it2++) )
    ++prefix_length;
于 2013-07-15T23:03:51.260 回答
0

此外,如果您正在处理向量或列表之类的容器,那么为了将一个元素遍历到另一个元素,您需要一个迭代器。您还可以通过调用 vec1.at(I++) 和 vec2.at(I++) 来访问元素。然后比较元素。

于 2013-07-16T04:17:02.450 回答