ICPC实验一、STL 的熟悉与使用

(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;
}

猜你喜欢

转载自blog.csdn.net/qq_41767945/article/details/90681287
今日推荐