2013-07-15 29 views
-2

我也行運營++後綴不宣

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

,但是當我運行線,我得到的

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

代碼有什麼問題?

+0

是prefix_length對象還是基元? –

+0

@LukeB。 int prefix_length – POD

+2

'str1'和'str2'是否定義了postfix ++?您可能需要製作SSCCE。 – Rapptz

回答

2

如果vec1vec2vector 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; 
+2

舊的'&&'有什麼問題?雖然,展示瞭如何使用迭代器的+1。 –

0

此外,如果你正在處理像載體或列表的容器,然後以一個元素穿越到另一個你需要一個Iterator。您也可以通過調用vec1.at(I ++)和vec2.at(I ++)來訪問元素。然後比較這些元素。