C++ STL模板和标准模板库

一、函数模板

 

 

#include<iostream>
#include<string>
using namespace std;

template<class T>
T min(T a[],int n)
{
	int i;
	T minv=a[0];
	for(i=1;i<n;i++)
	{
	    if(minv>a[i])
		    minv=a[i];	
	}	
	return minv;
} 
int main()
{
    int a[]={1,3,0,2,7,6,4,5,2};
    double b[]={1.2,-3,4,6.8};
    cout<<"a数组的最小值为"<<min(a,9)<<endl;
	cout<<"b数组的最小值为"<<min(b,4)<<endl; 
	return 0;	
}

 

这样做,省去了不同类型间比较的麻烦,相当于新建了一个模板来装之前的各种类型

二、类模板

三、stl简介

1、vector 简单知识

四、vector

 

#include<iostream>
#include<vector>
using namespace std;

int main()
{
    vector<int>v1;
	v1.push_back(1);
	v1.push_back(2); //尾部插入 
	v1.insert(v1.begin() ,0);//头部插入 
	v1.insert(v1.end() ,4);//尾部插入
	v1.insert(v1.end()-1,3);//倒数第二位置 
	v1[4]=10;
	for(int i=0;i<v1.size();i++)
	    cout<<v1[i]<<" "; 
	return 0;	//
}

#include<iostream>
#include<vector>
using namespace std;

int main()
{
    vector<int>v1;
	v1.push_back(1);
	v1.push_back(2); //尾部插入 
	v1.insert(v1.begin() ,0);//头部插入 
	v1.insert(v1.end() ,4);//尾部插入
	v1.insert(v1.end()-1,3);//倒数第二位置 
	v1[4]=10;
	v1.pop_back();//删除末尾值 
	v1.erase(v1.begin(),v1.end());//删除全部值 
	for(int i=0;i<v1.size();i++)
	    cout<<v1[i]<<" "; 
	return 0;	//
}

2、vector迭代器

#include<iostream>
#include<vector>//载入库 
using namespace std;

int main()
{
    vector<int>v1;
    for(int i=1;i<10;i++)
	    v1.push_back(i);
	vector<int>::iterator it;//迭代器 
	for(it=v1.begin();it<v1.end();it++)
	    if(*it%2==0)
		    cout<<*it<<" "; 
	
	return 0;	//
}

注意迭代器加星号指代的是向量的内容,不加星号指向量的坐标。

#include<iostream>
#include<vector>//载入库 
using namespace std;

int main()
{
    vector<int>v1(4,0);
    vector<int>v2(3,1);
    v1.insert(v1.begin(),5);
    v1.insert(v1.end(),7);
	vector<int>::iterator it=v1.begin()+4;
	v1.insert(it,9);
	for(it=v1.begin();it<v1.end();)
	{
		if(*it%2==0)
		    it=v1.erase(it);//删除了之后,还留在原位置 
		else
		    it++; //向后进行 
	 } 
	v2.insert(v2.begin(),v1.begin(),v1.begin()+2);//v1.begn()+2是指结束标志,所以就是将v1的两个值添加到v2的头部。
	for(int i=0;i<v2.size();i++)
	    cout<<v2[i]<<" "; 
	return 0;	//
}

#include<iostream>
#include<vector>//载入库 
using namespace std;

int main()
{
    vector<int>v1(4,0);
    vector<int>v2(3,1);
    v1.insert(v1.begin(),5);
    v1.insert(v1.end(),7);
	vector<int>::iterator it=v1.begin()+4;
	v1.insert(it,9);
	for(it=v1.begin();it<v1.end();++it)
	{
		if(*it%2==0)
		    it=v1.erase(it);//删除了之后,还留在原位置 
		//else
		    //it++; //向后进行 
	 } 
	for(int i=0;i<v1.size();i++)
	    cout<<v1[i]<<" ";
	cout<<endl;
	v2.insert(v2.begin(),v1.begin(),v1.begin()+2);
	for(int i=0;i<v2.size();i++)
	    cout<<v2[i]<<" "; 
	return 0;	//
}

it++,得到这样的结果,

3、应用算法

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
	vector<int>v(5,3);
	vector<int>::iterator p;
	p=find(v.begin(),v.end(),3);
	cout<<p;
	if(p!=v.end())
	    cout<<*p<<endl;
	p=find(v.begin(),v.end(),5);
	if(p==v.end())
	    cout<<"not find\n";
	return 0;    
}

#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
int main()
{
	vector<string>v;
    v.push_back("food");
    v.push_back("candy");
    v.push_back("apple");
    sort(v.begin(),v.end());
    vector<string>::iterator it;
    for(it=v.begin();it!=v.end();it++)
    {
    	cout<<*it<<" ";
	}
	return 0;    
}

#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
int main()
{
	int a[]={10,5,15,20,25};
	int b[]={50,40,30,20,10};
	vector<int>v(10);
	vector<int>::iterator it;
	sort(a,a+5);
	for(int i=0;i<5;i++)
	{
		cout<<a[i]<<" ";
	}
	cout<<endl;
	sort(b,b+5);
	merge(a,a+5,b,b+5,v.begin());
    for(it=v.begin();it!=v.end();it++)
    {
    	cout<<*it<<" ";
	}
	return 0;    
}

 四、map容器

 

  

  

  

  

  

  

  

 

 

 

posted on 2018-04-03 21:19  箬笠蓑衣  阅读(2789)  评论(0编辑  收藏  举报