zoukankan      html  css  js  c++  java
  • 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
    ";
    	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容器

      

      

      

      

      

      

      

     

  • 相关阅读:
    C++ error C2678: 二进制“+”: 没有找到接受“const char [22]”类型的左操作数的运算符(或没有可接受的转换)没有与这些操作数匹配的“+”运算符...
    Qt 没有byte
    C++ 解决:错误 1 error MSB8031: Building an MFC project for a non-Unicode character set is deprecated
    .NET Core-插件如何读取指定配置结点
    CodeSmith4-案例
    CodeSmith3-对象(CodeTemplate、Response、CodeTemplateInfo)
    CodeSmith2-Property(属性)
    vscode
    OPCUA suscription TimeoutError
    OPCUA 节点层级
  • 原文地址:https://www.cnblogs.com/ruo-li-suo-yi/p/8711222.html
Copyright © 2011-2022 走看看