#include <cstdlib> #include <iostream> #include<vector> #include <algorithm> using namespace std; //找出vector中后面元素和前面元素的最大差值, //遍历的N2复杂度的就不考虑了 //容器从两个元素开始,以此往后取第三个、第四个……元素 //构造最大差值元素 int max_diff(vector<int>& arr) { if(arr.size()<=1) cout<<"容器长度必须是大于2"<<endl; //容器元素大于等于二个时 if(arr.size()>1) { //先定义最大差值,留着更新 int MAX=arr[1]-arr[0]; //前两个元素的 最小值 int MIN=min(arr[0],arr[1]); //从第三个元素开始 for(vector<int>:: iterator it=arr.begin()+2;it!=arr.end();++it) { //若这个元素和前面元素的差值比max大,更新max if(*it-MIN>MAX) { MAX=*it-MIN;} //若这个元素比前面容器的元素min小,更新min if(*it<MIN) {MIN=*it;} } cout<<"最大差值是:"<<MAX<<endl; } } int main(int argc, char *argv[]) { //建立容器,并加入数据 vector<int> arr; arr.push_back(1); arr.push_back(0); arr.push_back(12); arr.push_back(10); arr.push_back(6); arr.push_back(9); //输出容器中的元素 for(vector<int> ::iterator it=arr.begin();it!=arr.end();++it) { cout<<*it<<" "; if(it==arr.end()-1) cout<<""<<endl; } //调用函数 max_diff(arr); system("PAUSE"); return EXIT_SUCCESS; }