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容器
C++ STL模板和标准模板库的更多相关文章
- STL 简介,标准模板库
这篇文章是关于C++语言的一个新的扩展--标准模板库的(Standard Template Library),也叫STL. 当我第一次打算写一篇关于STL的文章的时候,我不得不承认我当时低估了这个话 ...
- STL采用的标准模板库
一.map,set set集合容器实现了红黑树(Red-Black Tree)的平衡二叉检索树的数据结构,在插入元素时,它会自动调整二叉树的排列,把该元素放到适当的位置,以确保每个子树根节点的键值大于 ...
- 7.1 C++模板基本概念及语法 《C++模板与标准模板库》
参考:http://www.weixueyuan.net/view/6398.html 总结: 模板是另一种代码重用机制. 需要设计的几个类,其功能都是一样的,仅仅只是需要操作的数据类型不同. 有更好 ...
- C++的标准模板库STL中实现的数据结构之链表std::list的分析与使用
摘要 本文主要借助对C++的标准模板库STL中实现的数据结构的学习和使用来加深对数据结构的理解,即联系数据结构的理论分析和详细的应用实现(STL),本文是系列总结的第二篇.主要针对线性表中的链表 ST ...
- STL标准模板类
STL,中文名标准模板库,是一套C++的标准模板类(是类!),包含一些模板类和函数,提供常用的算法和数据结构. STL分为:迭代器,容器,适配器,算法以及函数对象. --迭代器是一种检查容器内元素并遍 ...
- (C/C++学习笔记) 二十二. 标准模板库
二十二. 标准模板库 ● STL基本介绍 标准模板库(STL, standard template library): C++提供的大量的函数模板(通用算法)和类模板. ※ 为什么我们一般不需要自己写 ...
- STL标准模板库(简介)
标准模板库(STL,Standard Template Library)是C++标准库的重要组成部分,包含了诸多在计算机科学领域里所常见的基本数据结构和基本算法,为广大C++程序员提供了一个可扩展的应 ...
- STL标准模板库介绍
1. STL介绍 标准模板库STL是当今每个从事C++编程的人需要掌握的技术,所有很有必要总结下 本文将介绍STL并探讨它的三个主要概念:容器.迭代器.算法. STL的最大特点就是: 数据结构和算法的 ...
- 【c++】标准模板库STL入门简介与常见用法
一.STL简介 1.什么是STL STL(Standard Template Library)标准模板库,主要由容器.迭代器.算法.函数对象.内存分配器和适配器六大部分组成.STL已是标准C++的一部 ...
随机推荐
- [C++入门篇]了解C++
前言 我是杨某人,点击右下方"+"一键关注我.如果你喜欢我的文章,那么拒绝白嫖行为.然后..请多来做客鸭. 如果你是已经入门的大佬,请滑到下方点个推荐再走. 我个人认为,博客有两种 ...
- 2019-2020-3 20174318张致豪《网络对抗技术》Exp2 后门原理与实践
Exp2 后门原理与实践 前期准备 一.实验目标与基础知识 1.1 实践目标 使用netcat获取主机操作Shell,cron启动 使用socat获取主机操作Shell,任务计划启动 使用MSF m ...
- Python学习之布尔和数字
布尔有True和Flase两种值 数字0.None,以及元素为空的容器类对象都可视为False,反之为Ture.
- python常用软件包
redis数据库: 链接:https://pan.baidu.com/s/1X_ndCj0scF2WZd2FPLRKag 提取码:e3zm git安装包: 链接:https://pan.baidu.c ...
- oracle使用expdp定时备份数据库
目录 oracle使用expdp备份数据库 备份shell脚本 创建定时任务 oracle使用expdp备份数据库 备份shell脚本 #!/bin/sh #获取当前时间 BACKUPTIME=$(d ...
- C++ 别踩白块小游戏练习
#include <iostream> #include <stdio.h> #include <stdlib.h> #include <easyx.h> ...
- shell脚本中的各种表达式介绍和使用
#前言:在shell脚本中,有各种的表达式,包括有条件测试表达式,文件表达式,字符串表达式,整数表达式,接下来我们来了解一下他们的使用方法 1.条件测试表达式 #首先来看一下条件测试语法 #条件测试语 ...
- tkinter学习1
GUI 用户交互界面 tkinter 介绍 tkinter是 python自带的gui库,对图像处理库tk的封装 #导入tkinter库 import tkinter #创建主窗口对象 root = ...
- Spring MVC系列-(2) Bean的装配
2. Bean的装配 Spring容器负责创建应用程序中的bean,并通过DI来协调对象之间的关系.Spring提供了三种主要的装配机制: XML显式配置: Java配置类进行显式配置: 隐式的bea ...
- Mybatis---在控制台打印sql语句
在mybatis主配置文件中mybatis.xml的<configuration>标签中加入 <settings> <setting name="logImpl ...