首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

vector<>上标越界,求较高手哪里越了

2013-01-04 
vector下标越界,求较高手哪里越了?//lotto.cpp -- #includeiostream#includevector#includealgorit

vector<>下标越界,求较高手哪里越了?

//lotto.cpp -- 
#include<iostream>
#include<vector>
#include<algorithm>
#include<iterator>
#include<cstdlib>
using namespace std;

vector<int> Lotto(int dot_num,int selected_num);
int main()
{
cout<<"Please input the total number and selected number of lotto: ";
int total,selective;
cin>>total>>selective;
vector<int> winner;
winner=Lotto(total,selective);
cout<<"The winner of lotto is: ";
ostream_iterator<int,char> out(cout," ");
copy(winner.begin(),winner.end(),out);
return 0;
}

vector<int> Lotto(int dot_num,int selected_num)
{
vector<int> temp(dot_num),winner(selected_num);
for(int i=0;i<dot_num;i++)
temp[i]=i+1;
for(int i=0;i<selected_num;i++)
{
random_shuffle(temp.begin(),temp.end());
    winner[i]=temp[0];
}
sort(winner.begin(),winner.end());
return winner;
}

自己调试的结果,是如果加上红色标注的部分,就没问题。如果去掉,运行时就会提示越界。但是不明白为什么,vector不是可以动态调节大小吗?加这两个参数有什么意义呢?求教高手解释一下。感激不尽啊
[解决办法]
winner一开始的size为0 你怎么可能用 winner[i]=temp[0]; 

热点排行