定义一个数组,然后全部赋值为-1,用一个0-3000的循环for(int i;i<=3000;i++)(为了把3000个数放入在数组中),用随机数产生一个位置,看数组上这个位置如果是-1,把i放入,否则重新随机一个位置,直到把这个i放入数组中。
应该是数组下标越界了,调试运行下,比较分配的数组大小是否始终大于数组下标。
#include
#include
#include
int main()
{
const int cnt = 3000;
std::vector
src.resize(cnt+1);
int dst[cnt+1];
int i = 0;
srand(time(0));
for(i=0;i<=cnt;i++)
{
src[i] = i;
}
int index = 0;
for(i=0;i<=cnt;i++)
{
index = rand()%src.size();
dst[i] = src[index];
src.erase(src.begin()+index);
}
for(i=0;i<=cnt;i++)
std::cout<
std::cout<
}