一、函数模板

#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容器

  

  

  

  

  

  

  

 

C++ STL模板和标准模板库的更多相关文章

  1. STL 简介,标准模板库

    这篇文章是关于C++语言的一个新的扩展--标准模板库的(Standard Template Library),也叫STL.  当我第一次打算写一篇关于STL的文章的时候,我不得不承认我当时低估了这个话 ...

  2. STL采用的标准模板库

    一.map,set set集合容器实现了红黑树(Red-Black Tree)的平衡二叉检索树的数据结构,在插入元素时,它会自动调整二叉树的排列,把该元素放到适当的位置,以确保每个子树根节点的键值大于 ...

  3. 7.1 C++模板基本概念及语法 《C++模板与标准模板库》

    参考:http://www.weixueyuan.net/view/6398.html 总结: 模板是另一种代码重用机制. 需要设计的几个类,其功能都是一样的,仅仅只是需要操作的数据类型不同. 有更好 ...

  4. C++的标准模板库STL中实现的数据结构之链表std::list的分析与使用

    摘要 本文主要借助对C++的标准模板库STL中实现的数据结构的学习和使用来加深对数据结构的理解,即联系数据结构的理论分析和详细的应用实现(STL),本文是系列总结的第二篇.主要针对线性表中的链表 ST ...

  5. STL标准模板类

    STL,中文名标准模板库,是一套C++的标准模板类(是类!),包含一些模板类和函数,提供常用的算法和数据结构. STL分为:迭代器,容器,适配器,算法以及函数对象. --迭代器是一种检查容器内元素并遍 ...

  6. (C/C++学习笔记) 二十二. 标准模板库

    二十二. 标准模板库 ● STL基本介绍 标准模板库(STL, standard template library): C++提供的大量的函数模板(通用算法)和类模板. ※ 为什么我们一般不需要自己写 ...

  7. STL标准模板库(简介)

    标准模板库(STL,Standard Template Library)是C++标准库的重要组成部分,包含了诸多在计算机科学领域里所常见的基本数据结构和基本算法,为广大C++程序员提供了一个可扩展的应 ...

  8. STL标准模板库介绍

    1. STL介绍 标准模板库STL是当今每个从事C++编程的人需要掌握的技术,所有很有必要总结下 本文将介绍STL并探讨它的三个主要概念:容器.迭代器.算法. STL的最大特点就是: 数据结构和算法的 ...

  9. 【c++】标准模板库STL入门简介与常见用法

    一.STL简介 1.什么是STL STL(Standard Template Library)标准模板库,主要由容器.迭代器.算法.函数对象.内存分配器和适配器六大部分组成.STL已是标准C++的一部 ...

随机推荐

  1. [C++入门篇]了解C++

    前言 我是杨某人,点击右下方"+"一键关注我.如果你喜欢我的文章,那么拒绝白嫖行为.然后..请多来做客鸭. 如果你是已经入门的大佬,请滑到下方点个推荐再走. 我个人认为,博客有两种 ...

  2. 2019-2020-3 20174318张致豪《网络对抗技术》Exp2 后门原理与实践

    Exp2 后门原理与实践 前期准备 一.实验目标与基础知识 1.1 实践目标 使用netcat获取主机操作Shell,cron启动 使用socat获取主机操作Shell,任务计划启动 使用MSF  m ...

  3. Python学习之布尔和数字

    布尔有True和Flase两种值 数字0.None,以及元素为空的容器类对象都可视为False,反之为Ture.

  4. python常用软件包

    redis数据库: 链接:https://pan.baidu.com/s/1X_ndCj0scF2WZd2FPLRKag 提取码:e3zm git安装包: 链接:https://pan.baidu.c ...

  5. oracle使用expdp定时备份数据库

    目录 oracle使用expdp备份数据库 备份shell脚本 创建定时任务 oracle使用expdp备份数据库 备份shell脚本 #!/bin/sh #获取当前时间 BACKUPTIME=$(d ...

  6. C++ 别踩白块小游戏练习

    #include <iostream> #include <stdio.h> #include <stdlib.h> #include <easyx.h> ...

  7. shell脚本中的各种表达式介绍和使用

    #前言:在shell脚本中,有各种的表达式,包括有条件测试表达式,文件表达式,字符串表达式,整数表达式,接下来我们来了解一下他们的使用方法 1.条件测试表达式 #首先来看一下条件测试语法 #条件测试语 ...

  8. tkinter学习1

    GUI 用户交互界面 tkinter 介绍 tkinter是 python自带的gui库,对图像处理库tk的封装 #导入tkinter库 import tkinter #创建主窗口对象 root = ...

  9. Spring MVC系列-(2) Bean的装配

    2. Bean的装配 Spring容器负责创建应用程序中的bean,并通过DI来协调对象之间的关系.Spring提供了三种主要的装配机制: XML显式配置: Java配置类进行显式配置: 隐式的bea ...

  10. Mybatis---在控制台打印sql语句

    在mybatis主配置文件中mybatis.xml的<configuration>标签中加入 <settings> <setting name="logImpl ...