未声明运算符++后缀



我有行

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

,但当我运行线路时,我得到的错误

CCD_ 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;

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

最新更新