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++的一部 ...
随机推荐
- leetcode 219
固定长度的滑动窗口+set class Solution { public: bool containsNearbyDuplicate(vector<int>& nums, int ...
- layui表格数据渲染SpringBoot+Thymeleaf返回的数据时报错(Caused by: org.attoparser.ParseException: Could not parse as expression: ")
layui table渲染数据时报错(Caused by: org.attoparser.ParseException: Could not parse as expression: ") ...
- 文本编辑器 - Sublime Text 3 换行无法自动缩进的解决方法
一.换行无法自动缩进的问题,如图: 稍微查了一下网上的办法,是把汉化文件删除,但是会造成菜单栏混乱,简直无法忍受... 那么这里介绍的是另一种解决办法.在用户的热键配置文件(preferences-k ...
- C++ 随笔练习 求和
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int main() { int ...
- div中单行文字垂直水平居中
1.div中单行文字垂直水平居中.条件:外层div高度已经给定.代码如下: 复制代码代码如下: <style type="text/css">.div3{border: ...
- 如何让antd的Modal组件的确认和取消不显示(或自定义按钮)(转载)
使用Modal中的footer属性,如下: <Modal title="更改成员" visible={visible} confirmLoading={confirmLoad ...
- Fiddler3 使用技巧
1.Fiddler抓不到包怎么解决 (1)先确定是HTTP包抓不到还是HTTPS包抓不到.如果只是HTTPS包抓不到,说明是证书的问题,需要重新安装证书. (2)检查浏览器的HTTP代理设置是否正确, ...
- python中使用openpyxl模块时报错: File is not a zip file
python中使用openpyxl模块时报错: File is not a zip file. 最大的原因就是不是真正的 xlsx文件, 如果是通过 库xlwt 新建的文件,或者是通过自己修改后缀名 ...
- Java并发编程之CAS第三篇-CAS的缺点及解决办法
Java并发编程之CAS第三篇-CAS的缺点 通过前两篇的文章介绍,我们知道了CAS是什么以及查看源码了解CAS原理.那么在多线程并发环境中,的缺点是什么呢?这篇文章我们就来讨论讨论 本篇是<凯 ...
- 微信开发+百度AI学习:环境搭建
注册成为百度开发者,百度接入指南http://ai.baidu.com/docs#/Begin/top 选择分类进去创建应用,接口权限全部选择好了,这样就可以只创建一个应用就有全部接口权限. C#开发 ...