我有线
while (prefix_length < 3 && equal(*vec1++, *vec2++)) prefix_length++;
,但是当我运行该行时,出现错误
no 'operator++(int)' declared for postfix '++' [-fpermissive]
.
代码有什么问题?
如果vec1
和vec2
是vector
s,它们没有自增运算符。它们是容器。您需要使用迭代器来遍历它们。就像是:
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;
此外,如果您正在处理向量或列表之类的容器,那么为了将一个元素遍历到另一个元素,您需要一个迭代器。您还可以通过调用 vec1.at(I++) 和 vec2.at(I++) 来访问元素。然后比较元素。