读书人

为什么有时候编译正确有时候部队?解

发布时间: 2012-03-26 15:46:56 作者: rapoo

为什么有时候编译正确,有时候部队?
/*
试从含有n个int型数的数组中删去若干个成分,使剩下的全部成分构成一个不递减的子序列。设计算法和编写程序求出数组的不减子序列的长。
*/
#include <iostream>
#include <vector>
#include <string>
#include <cstdlib>
#include <ctime>
using std::vector;
using std::string;
using std::cout;
using std::cin;
using std::endl;

int main()
{
cout < < "请输入要产生的int型数组的元素的个数: " < <endl;
int n;
cin> > n;
srand(time(0));
vector <int> ivec;
for(int i=0;i!=n;++i)
ivec.push_back(rand()%100);
//输出原元素
for(vector <int> ::iterator iter=ivec.begin();iter!=ivec.end();++iter)
cout < <*iter < < '\t ';
cout < <endl;
//比较数列,并删除数列,产生新数列
for(vector <int> ::iterator iter1=ivec.begin()+1;iter1!=ivec.end();++iter1)
for(vector <int> ::iterator iter2=ivec.begin();iter2!=iter1;++iter2)
if(*iter1 <*iter2)
{
vector <int> ::iterator iter3;
for(iter3=iter1;iter3!=ivec.end()-1;++iter3)
{
*iter3=*(iter3+1);
}
if(iter3==ivec.end()-1)
{
ivec.erase(iter3);
iter2=ivec.begin();
}
}
//输出排完序之后的元素
for(vector <int> ::iterator iter=ivec.begin();iter!=ivec.end();++iter)
cout < <*iter < < '\t ';
cout < <endl;
return 0;
}

[解决办法]
编译没出错过!

读书人网 >C++

热点推荐