(1) 练习 vector 和 list 的使用。
定义一个空的 vector,元素类型为 int,生成 10 个随机数插入到 vector 中,用迭代 器遍历 vector 并输出其中的元素值。在 vector 头部插入一个随机数,用迭代器遍历 vector 并输出其中的元素值。用泛型算法 find 查找某个随机数,如果找到便输出,否则将此数 插入 vector 尾部。用泛型算法 sort 将 vector 排序,用迭代器遍历 vector 并输出其中的元 素值。删除 vector 尾部的元素,用迭代器遍历 vector 并输出其中的元素值。将 vector 清 空。 定义一个 list,并重复上述实验,并注意观察结果。
(2) 练习泛型算法的使用。
定义一个 vector,元素类型为 int,插入 10 个随机数,使用 sort 按升序排序,输出 每个元素的值,再按降叙排序,输出每个元素的值。练习用 find 查找元素。用 min 和 max 找出容器中的小元素个大元素,并输出。
源代码:
①vector
// ICPC实验一 STL 的熟悉与使用.cpp : Defines the entry point for the console application.
//
//////////////////
// Name:实验一 STL 的熟悉与使用、vector部分;
// Date:20190529
// Aurthor:leechoy
//////////////////
//(1) 练习 vector的使用
#include "stdafx.h"
#include<iostream>
#include<vector> //动态数组
#include<ctime>
#include<algorithm> //泛型
#define random()(rand()%x) //定义随机函数
using namespace std;
int main(int argc, char* argv[])
{
srand((unsigned)time(NULL));
vector<int> a; //创建动态数组容器vector a
vector<int>::iterator it;
for(int i=0;i<10;i++)
{
a.push_back(rand()%100);
//随机插入10个100以内的数值;
}
cout<<"随机插入vector动态数组中十个数:";
for( it = a.begin();it!=a.end();it++)
{
cout<<*it<<" "; //迭代器输出
}
cout<<endl<<"在vector的头部插入一个随机数:";
int instertElement = rand()%100; //创建随机数
cout<<instertElement<<endl;
it = a.begin();
a.insert(it,instertElement); //插入该100以内的随机数;
cout<<"插入后容器内的元素为:";
for(it;it!=a.end();it++)
{
cout<<*it<<" "; //迭代器输出
}
int findElement = rand()%100;//再次生成一个随机数;
cout<<endl<<"查找随机数:"<<findElement;
if(find(a.begin(),a.end(),findElement))
cout<<endl<<"已经查找到"<<findElement;
else{
cout<<endl<<"没有查找到"<<findElement<<"于vector尾端插入它!";
a.push_back(findElement);
}
sort(a.begin(),a.end());
cout<<endl<<"sort泛型函数排序后的vector容器的序列为:";
for(it=a.begin();it!=a.end();it++)
{
cout<<*it<<" "; //迭代器输出排序后的容器中的元素
}
it = a.end()-1;
cout<<endl<<"删除vector其尾端值"<<*it;
a.pop_back();//删除尾端值
cout<<endl<<"删除后其容器内的元素为:";
for(it=a.begin();it!=a.end();it++)
{
cout<<*it<<" "; //迭代器输出删除尾端后的值
}
a.clear(); //清空容器
cout<<endl;
return 0;
}
②list
//////////////////
// Name:实验一 STL 的熟悉与使用、list部分;
// Date:20190529
// Author:leechoy
//////////////////
//(1) 练习 list的使用
#include "stdafx.h"
#include<iostream>
#include<list>
#include<ctime>
#include<algorithm>
#define random()(rand()%x) //定义随机函数
using namespace std;
int main(int argc, char* argv[])
{ int randomElement;
srand((unsigned)time(NULL)); //创建时间随机种子
list<int> a; //构建一个单链表容器 a
cout<<"于list容器中插入10个100以内的随机数:";
for(int i=0;i<10;i++)
a.push_back(rand()%100); //插入10个100内的随机值
list<int>::iterator it; //创建一个list容器的迭代器 it
for(it = a.begin() ; it!=a.end();it++)
cout<<*it<<" "; //打印list容器中的随机数
randomElement = rand()%100; //生成随机数赋值给randomElement
cout<<endl<<"于list容器的头部插入一个随机数:"<<randomElement<<endl;
a.push_front(randomElement); //插入随机数randomElement
cout<<"插入随机值"<<randomElement<<"后该list容器中的元素为:";
for(it = a.begin() ; it!=a.end();it++)
cout<<*it<<" "; //打印list容器中的插入随机数后的元素
randomElement = rand()%100; //生成随机数赋值给randomElement
cout<<endl<<"于list容器中查找随机值:"<<randomElement<<endl;
it = find(a.begin(),a.end(),randomElement); //查找list容器中是否存在该随机值
if(it == a.end())
cout<<"list容器中不存在"<<randomElement<<endl;
else
{
cout<<"list容器中存在"<<randomElement<<",插入该随机值。"<<endl;
a.push_back(randomElement);
}
a.sort();//调用泛型函数sort排序
cout<<"利用泛型sort函数排序后该list容器中的元素为:";
for(it = a.begin() ; it!=a.end();it++)
cout<<*it<<" "; //打印list容器中的元素
cout<<endl;
a.pop_back();
cout<<"清除最后一位后list中元素为:";
for(it = a.begin() ; it!=a.end();it++)
cout<<*it<<" "; //打印list容器中的元素
cout<<endl;
a.clear(); //清空
return 0;
}
####③泛型练习
//////////////////
// Name:实验一 STL 的熟悉与使用、泛型函数部分;
// Date:20190529
// Author:leechoy
//////////////////
//2、泛型函数的使用
#include<iostream.h>
#include<vector>
#include<algorithm>
#include<ctime>
using namespace std;
#define random() (rand()%x);
vector<int> a;
bool cmp_down(int a ,int b)//升序函数
{
return a>b;
}
int main()
{ vector<int>::iterator p;
srand((unsigned)time(NULL)); //创建时间随机种子
for(int i =0 ;i<10;i++)
{
a.push_back(rand()%100);
}
cout<<"随机产生10个数:";
for(p=a.begin();p !=a.end();p++)
{
cout<<*p<<" ";
}
sort(a.begin(),a.end());//升序排序;
cout<<endl<<"利用sort升序排序后:";
for(p=a.begin();p !=a.end();p++)
{
cout<<*p<<" ";
}
sort(a.begin(),a.end(),cmp_down);
cout<<endl<<"利用sort降序排列后list中的内容为:";
for(p=a.begin();p !=a.end();p++)
{
cout<<*p<<" ";
}
///////////////利用find()查找数据
int randomInterger = rand()%100;
//判断是否存在随机值
if(find(a.begin(),a.end(),randomInterger)) randomInteger
cout<<endl<<"找到随机元素"<<randomInterger;
else
cout<<endl<<"容器中不存在该随机值"<<randomInterger<<endl;
cout<<endl<<"容器中第四个和第五个中最大的为(利用max()):"<<_cpp_max(a[3],a[4]);
//vc6.0中max和min被修改成了_cpp_max和_cpp_min
cout<<endl<<"容器中第六个和七个中较小的为(利用min()):"<<_cpp_max(a[5],a[6]);
cout<<endl<<"容器中最大值为(利用max_element()):"<<*max_element(a.begin(),a.end());
//max_element()和min_element()可以对指定范围进行求取最大值
cout<<endl<<"容器中最小值为(利用min_element());"<<*min_element(a.begin(),a.end()); //
cout<<endl;
return 0;
}