#include<iostream>
using namespace std;
int main()
{
int p1[] = { 1,2,3 }, p2[] = { 4,5,6 };
int* ia[] = { p1,p2 };
for (auto& a : ia)
{
for (auto& s : a)
cout << s;
}
}
E2291 此基于范围的“for”语句需要适合的 "begin" 函数,但未找到
初学C++,不理解,希望大佬解答,感谢。
for循环要有初始化的值哦,也就是begin
for循环可以这样进行使用!
但是, for (auto& a : ia)得到的是两个数组的首地址;
然而这样遍历无法得知每个数组的大小,所以会出问题;
我简单的调试了一下,给出一些修改意见:
1. ia可以for (auto& a : ia),但是它遍历出来的是int *类型,所以下面无法再继续for (auto& s : a)遍历;
2. 由于得到的是一个指针,也就是数组的首地址,但是并不知道对应数组的元素个数,所以也无法正常遍历,因此,只能判断指针存储的数据,因为对应野指针的数值乱值。
3. 然后指针自增一即可。
#include<iostream>
using namespace std;
int main() {
int p1[] = { 1,2,3 }, p2[] = { 4,5,6 };
int* ia[] = { p1,p2 };
for (auto a : ia) {
while (*a > -1) {
cout << *a << ", ";
a++;
}
}
}
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y