实验2
回答
1.以容器容量大小为迭代次数,历尽函数,将结果返回容器储存
2.minmax只用迭代1次,那两个共要两次
3一样
代码
#include<iostream>
#include<vector>
#include<algorithm>
#include<numeric>
#include<iomanip>
#include<cstdlib>
#include<ctime>
template<typename T>
void output(const T &c);
int generate_random_number();
void test1();
void test2();
int main()
{
std::srand(std::time(0));
std::cout<<"测试1:\n";
test1();
std::cout<<"\n测试2:\n";
test2();
}
template <typename T>
void output(const T &c){
for(auto &i:c)
std::cout<<i<<' ';
std::cout<<'\n';
}
int generate_random_number(){
return std::rand()%101;
}
void test1(){
using namespace std;
vector<int> v0(10);
generate(v0.begin(),v0.end(),generate_random_number);
cout<<"v0: ";output(v0);
vector<int> v1{v0};
sort(v1.begin(),v1.end());
cout<<"v1: ";output(v1);
vector<int> v2{v0};
sort(v2.begin()+1,v2.end()-1);
cout<<"v2: ";output(v2);
}
void test2(){
using namespace std;
vector<int> v0(10);
generate(v0.begin(),v0.end(),generate_random_number);
cout<<"v0: ";output(v0);
auto min_iter=min_element(v0.begin(),v0.end());
auto max_iter=max_element(v0.begin(),v0.end());
cout<<"最小值"<<*min_iter<<endl;
cout<<"最大值"<<*max_iter<<endl;
auto ans=minmax_element(v0.begin(),v0.end());
cout<<"最大值"<<*(ans.second)<<endl;
cout<<"最小值"<<*(ans.first)<<endl;
double avg1=accumulate(v0.begin(),v0.end(),0.0)/v0.size();
cout<<"均值:"<<fixed<<setprecision(2)<<avg1<<endl;
sort(v0.begin(),v0.end());
double avg2=accumulate(v0.begin()+1,v0.end()-1,0.0)/v0.size();
cout<<"去掉最大最小值的均值:"<<fixed<<setprecision<<avg2<<endl;
}

浙公网安备 33010602011771号