读书人

简单的有关问题找不出原因

发布时间: 2012-03-21 13:33:14 作者: rapoo

简单的问题,找不出原因
#include <iostream>
#include<vector>
using namespace std;

int main(int argc, char *argv[])
{

vector<int> v;
int a[10]={6,3,7,1,4,8,2,9,11,5};
for(int i=0;i<10;i++)
v[i]=a[i];
for(int i=0;i<v.size();i++)
v[i]=v[i]*v[i];
int sum=0;
for(int i=0;i<v.size();i++)
sum+=v[i];
sum=sum/v.size();
cout<<sum;
system("PAUSE");
return EXIT_SUCCESS;
}
编译通过了,但运行时总是提示内存不能written,不知道什么原因,无限郁闷中....

[解决办法]


v.size() = 0
[解决办法]
你这在我机子上根本通不过编译
[解决办法]


加了一句,因为不太懂相关语法,请优化

C/C++ code
#include  <iostream > #include <vector > using namespace std; int main(int argc, char *argv[]) {     vector <int> v ;    v.resize(10);    int a[10]={6,3,7,1,4,8,2,9,11,5};     for(int i=0;i <10;i++)         v[i]=a[i];     for(int i=0;i <v.size();i++)         v[i]=v[i]*v[i];     int sum=0;     for(int i=0;i <v.size();i++)         sum+=v[i];    sum=sum/v.size();     cout << sum;     return EXIT_SUCCESS; }
[解决办法]

这里的i可以用类型unsigned int比较好,否则,警告也很多
[解决办法]
#include <iostream >
#include <vector >
using namespace std;

int main(int argc, char *argv[])
{
vector <int > v;
int a[10]={6,3,7,1,4,8,2,9,11,5};
for(int i=0;i <10;i++)
v.push_back(a[i]);
// v[i]=a[i];
for( i=0;i <v.size();i++)
v[i]=v[i]*v[i];
int sum=0;
for( i=0;i <v.size();i++)
sum+=v[i];
sum=sum/v.size();
cout <<sum;
system("PAUSE");
return EXIT_SUCCESS;
}
呵呵
class vector
{
^^^^^^
reference operator[](size_type pos);
const_reference operator[](size_tye_pos);


}
vector::reference 作为控制序列中元素的引用
vector::reference 作为控制序列的元素引用常量
这些都是引用.
要先初始化后才能够作为a[i]的引用

[解决办法]

针对3楼的代码作了改进

C/C++ code
#include  <iostream > #include <vector > using namespace std; int main(int argc, char *argv[]) {     vector <int> v(10);    int a[10]={6,3,7,1,4,8,2,9,11,5};     for(int i=0;i <10;i++)         v[i]=a[i];     for(int i=0;i <v.size();i++)         v[i]=v[i]*v[i];     int sum=0;     for(int i=0;i <v.size();i++)         sum+=v[i];    sum=sum/v.size();     cout << sum << endl;     return EXIT_SUCCESS; } 

读书人网 >C++

热点推荐