基于范圍的for循環(huán) C++98遍歷方式 在C++98標(biāo)準(zhǔn)中,當(dāng)我們遍歷數(shù)組時(shí),一般方法就是下標(biāo)遍歷和指針遍歷。 intarr[]={1,2,3,5,6};//下標(biāo)遍歷for(size_ti=0;i 當(dāng)然還有一種遍歷方式,需要包含 #include C++11范圍遍歷 上述的幾種遍歷方式的共同點(diǎn)就是都需要寫明循環(huán)的一個(gè)范圍。對(duì)于我們需要完整的遍歷一個(gè)有范圍的集合/數(shù)組時(shí),完全可以讓編譯器自動(dòng)計(jì)算出范圍。因此C++11引入了基于范圍的for循環(huán)。 格式:for(迭代的變量:數(shù)組){} 現(xiàn)在我們使用范圍遍歷對(duì)數(shù)組進(jìn)行遍歷。 for(constint&e:arr){std::cout<<> 然后我們可以在這里加入auto自動(dòng)類型(C++11),遍歷將會(huì)更加簡(jiǎn)單。 for(constauto&elem:arr){std::cout<<> 但范圍遍歷不能適用于所有情況,范圍遍歷的條件就是循環(huán)迭代的范圍必須是可確定的。例如string、array、vector、list、map等都是可以正常使用的。而用戶自定義寫的類則需要自行提供自增運(yùn)算符重載和賦值運(yùn)算符重載。 int*ptr=arr;for(autoelem:ptr){std::cout<<> 遍歷沒有明確范圍的數(shù)組,是不能使用范圍遍歷方法的。 點(diǎn)擊加載圖片 在使用范圍遍歷的方式遍歷stl的容器時(shí),如果你使用auto聲明迭代器的變量,那么推導(dǎo)出來的類型是迭代器解引用后的對(duì)象。 std::vector 這里就需要注意了前者iter類型是迭代器對(duì)象,后者elem是解引用后的對(duì)象。 |
|