小编Dec*_*nWU的帖子

在多维数组中使用range-for循环时,键入"auto"的推断

之后int ia[3][4]{},我跑:

for(auto row : ia) // row should be type int*
    for(int *j = std::begin(*row); j!= end(*row); ++j) // error!!
        std::cout << *j << std::endl;
Run Code Online (Sandbox Code Playgroud)

根据C++入门第5篇:

因为row不是引用,所以当编译器
初始化row时,它会将每个数组元素(与
数组类型的任何其他对象一样)
转换为指向该数组的第一个元素的指针

因此,如果row是指向ia第一个元素的指针,那么为什么会发生错误呢?

非常感谢!

更新:

ch339.cpp: In function ‘int main()’:
ch339.cpp:10:31: error: no matching function for call to ‘begin(int*&)’
        for (int *j = begin(row); j!= end(row); ++j )
                               ^
ch339.cpp:10:31: note: candidates are:
In file included from /usr/include/c++/4.9/bits/basic_string.h:42:0,
                 from /usr/include/c++/4.9/string:52,
                 from /usr/include/c++/4.9/bits/locale_classes.h:40,
                 from /usr/include/c++/4.9/bits/ios_base.h:41,
                 from /usr/include/c++/4.9/ios:42,
                 from …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

3
推荐指数
1
解决办法
352
查看次数

标签 统计

c++ ×1

c++11 ×1