程序为:求最大子数组和
int n, sum=0;
cout << "please enter the num of array" << endl;
cin >> n;
int *a = new int[n];
for (int i = 0; i < n; i++)
{
cout << "输入a[" << i << "]" << endl;
cin >> a[i];
sum += a[i];
}
逐个输出
for (int &e : a){
cout<<e<<" ";
}
cout << "sum = " << sum << endl;
delete[] a;
return 0
编译会出现错误:此基于范围的for循环需要适合“begin”函数,但未找到
参考原因:
能够使用基于范围的for循环的条件:
首先,对象的范围必须可确定。对于类来说,需要有begin和end函数,范围就是begin和end之间;对于数组来说,范围就是数组的第一个和最后一个元素。
其次,还要求迭代的对象实现++和==等操作符。STL中的容器都能支持,而自己实现的类,则需要实现这些操作符。
---------------------
作者:WizardtoH
来源:优快云
原文:https://blog.youkuaiyun.com/WizardtoH/article/details/80990801
版权声明:本文为博主原创文章,转载请附上博文链接!
未解决,对代码进行修改,采用Vector,相比于前一种方法,可避免因忘记delete而造成内存泄漏,且可使用基于范围的for循环
int n, sum=0;
cout << "please enter the num of array" << endl;
cin >> n;
vector<int> a(n);
for (int i = 0; i < n; i++)
{
cout << "输入a[" << i << "]" << endl;
cin >> a[i];
sum += a[i];
}
for (int &e : a)
{
cout <<e<<" ";
}
cout << "sum = " << sum << endl;
return 0;