我的嵌入式系统获得了一个支持C++11的g++版本,所以我一直在清理代码。
for( uint16_t* p = array; p < (&array)[1]; ++p ) {
*p = fill_value;
}
到
for( uint16_t& r : array ) {
r = fill_value;
}
这使得文章更易读。
是否有一个基于范围的for循环可以操作array2[m][n]
中的所有元素?
旧版本为:
for( int16_t* p = array2[0]; p < (&array2)[1][0]; ++p ) {
*p = fill_value;
}
我不想使用嵌套循环,除非可以保证编译器会将它们展开。
(顺便说一句,编译器是GNU 4.7.4 Linaro g ++ ARM交叉编译器,随TI Code Composer Studio 6.0.0一起提供)
std::array
, 我可以写成for(p = array2.front().begin(); p < array2.back().end(); ++p)
,这是一个很大的改进,但仍然不如基于范围的 for 循环好。 - Ben Voigtstd :: array <std :: array <T,N>,M>
。 - M.M