未声明operator ++ postfix

时间:2013-07-15 22:44:09

标签: c++ c++11

我有一行

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

,但是当我运行该行时,我收到错误

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

代码有什么问题?

2 个答案:

答案 0 :(得分:2)

如果vec1vec2vector,则它们没有增量运算符。他们是容器。您需要使用迭代器来遍历它们。类似的东西:

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 ++)来访问元素。然后比较元素。