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