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++的一部 ...
随机推荐
- PHPRAP 1.0.2 发布,修复安装失败 Bug 和优化细节
PHPRAP,是一个PHP轻量级开源API接口文档管理系统,致力于减少前后端沟通成本,提高团队协作开发效率,打造PHP版的RAP. 更新记录 [修复]修复在MySQL5.5版本下安装数据初始化sql文 ...
- [LeetCode] 994. Rotting Oranges 腐烂的橘子
题目: 思路: 每个腐烂的橘子都能将自己上下左右的新鲜橘子传染,像极了现在的肺炎... 如果格子中只有一个腐烂的橘子,那么这便是一个典型的层次遍历,第一个传染多个,称为第二层,第二层传染第三层 但这里 ...
- Ubuntu16.04如何安装bazel?
官方文档:https://docs.bazel.build/versions/master/install-ubuntu.html 我没有使用二进制的安装方法,以下是二进制的安装方法: Install ...
- python装饰器之函数作用域
1.函数作用域LEGB L:local函数内部作用域 E:enclosing函数内部与内嵌函数之间 G:global全局作用域 B:build-in内置作用域 passline = 60 def fu ...
- Redis面试题集锦(精选)
1.什么是 Redis?简述它的优缺点? Redis的全称是:Remote Dictionary.Server,本质上是一个Key-Value 类型的内存数据库,很像memcached,整个数据库统统 ...
- failed to open directory
解决方法: 解决方案的路径不要包含中文!
- 交换机三种模式Access、Hybrid和Trunk
[端口介绍] 种链路类型:access.trunk.hybird 个VLAN,一般用于连接计算机端口: Trunk类型端口:可以允许多个VLAN通过,可以接收和发送多个VLAN 报文, 一般用于交换机 ...
- C结构体与链表
今天来总结C语言的学习盲点--结构体,为了不显单一,也为了补足作者链表的编程缺陷,特更此博文,总结近段时间的学习成果.话不多说,先上一段代码 struct none{int item; link ne ...
- 读书笔记——商广明《Nmap渗透测试指南》
一 Nmap基础学习 1.简介及安装 Nmap是一款由C语言编写的.开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具.软件名字Nmap是Ne ...
- C++ 深拷贝和浅拷贝详解
前言 在对象拷贝过程中,如果没有自定义拷贝构造函数,系统会提供一个缺省的拷贝构造函数,缺省的拷贝构造函数对于基本类型的成员变量,按字节复制,对于类类型成员变量,调用其相应类型的拷贝构造函数. 位拷贝( ...