2019-01-24 22:30:32


记录学习PAT的一些知识,有待更新

注:本文是对Algorithm 算法笔记 的总结


C++标准库模板(Standard Template Library,STL)

【vector】

1.单独定义一个vector       vector<typename> name;

  • vector<int> name;
  • vector<double> name;
  • vector<char> name;

2.定义vector数组

  • vector<typename> Arrayname[arraySize]
  • 例如 vector<int> vi[100];

3.vector 容器内元素访问

  1. 通过下标访问

定义一个为 vector<typename> vi; 可以直接访问如:vi[0]、vi[1]

2.通过迭代器访问

vector<typename>::iterator it;   这样 it 就是一个vector<typename>::iterator 型的变量;

指出的是vi[i]和*(vi.begin()+i)是等价的;(类似于指针)

#include <cstdio>
#include <vector>
#include<iostream>
using namespace std; int main(){
vector<int> vi;
for(int i=;i<=;i++){
vi.push_back(i); }
vector<int>::iterator it =vi.begin();
for(int i=;i<;i++){
printf("%d",*(it+i));
}
return ;
}

4.vector常用函数解析

(1)push_back();

(2)pop_back()

()size()

()clear()

(5)insert()

(6)erase()

5.vector 的常见用途

(1)存储数据

(2)用连接表存储图




【set】

1.set的定义:set<typename> name;

  • set<int> name;
  • set<double> name;
  • set<char> name;
  • set数组的定义: set<typename> Arrayname[arraySize-1]  如:set<int>  a[100];

2.set容器内元素的访问

  • set<typename>::iterator it;   这样 it 就是一个set<typename>::iterator 型的变量;

3.set常用函数

  1. insert()
  2. find()
  3. erase()
  4. size()
  5. clear()

4.set的常见用途

set最主要的作用是自动去重并按升序排序


【map】

1.map的定义:map<typename1,typename2> mp;

比如:map<string,int> mp;     第一个 typename1 是键的类型,第二个  typename2 是值的类型   注意如果是字符串到整型的映射必须使用string

2.map容器内元素的访问

(1)通过下标,如: mp['c'];

(2)通过迭代器,如:map<typename1,typename2>::iterator it;

#include<stdio.h>
#include<map>
using namespace std;
int main(){
map<char,int> mp;
mp['m']=;
mp['r']=;
mp['s']=;
for(map<char,int>::iterator it=mp.begin();it!=mp.end();it++){
print("%c %d\n",it->first,it->second);
}
return ; }

3.map常用函数

  1. find()
  2. erase()
  3. size()
  4. clear()

4.map的常见用途

  1. 需要建立字符与整数之间的映射
  2. 判断大整数或者其他类型的数据是否存在的题目,把map当bool数组使用


【queue】

1.queue的定义:queue<typename> name;

2.queue容器内元素的访问

先进先出的结构,所以只能用front() 访问队首元素,或是通过 back() 访问队尾元素

3.queue常用函数

  1. push()
  2. front(),back()
  3. pop()
  4. empty()
  5. size()

4.queue 的常见用途


c++容器 STL的更多相关文章

  1. 容器STL

    一.迭代器iterator 迭代器是容器的一种遍历方式,每种容器都定义了自己的迭代器类型 声明一个迭代器: 容器名称<数据类型>::iterator 迭代器名称 vector<int ...

  2. STL容器与配接器

    STL容器包括顺序容器.关联容器.无序关联容器 STL配接器包括容器配接器.函数配接器 顺序容器: vector                             行为类似于数组,但可以根据要求 ...

  3. STL之顺序容器

    顺序容器: vector:数组 list:链表 deque:双端数组 顺序容器适配器: stack:堆栈 queue:队列 priority_queue:优先级队列 deque是一个动态数组 dequ ...

  4. STL理论基础、容器、迭代器、算法

    一.STL基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段 ...

  5. C++标准模板库STL算法与自适应容器(栈和队列)

    参考<21天学通C++>第23与第24章节,对STL算法与自适应容器进行介绍. 实际上在前面的STL顺序容器.关联容器进行介绍时或多或少引用到了一些STL算法中的模板函数.而自适应容器是在 ...

  6. 详细解说 STL 排序(Sort)

    0 前言: STL,为什么你必须掌握 对于程序员来说,数据结构是必修的一门课.从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来.幸运的是这些理论都已经比较成熟,算 ...

  7. STL学习之路

    本文面向的读者:学习过C++程序设计语言(也就是说学习过Template),但是还没有接触过STL的STL的初学者.这实际上是我学习STL的一篇笔记,老鸟就不用看了. 什么是泛型程序设计 我们可以简单 ...

  8. 跟我学STL系列(1)——STL入门介绍

    一.引言 最近这段时间一直都在自学C++,所以这里总结下自己这段时间的学习过程,通过这种方式来巩固自己学到的内容和以备后面复习所用,另外,希望这系列文章可以帮助到其他自学C++的朋友们. 由于本人之前 ...

  9. STL之vetor 排序

    1 STL提供的Sort 算法 C++之所以得到这么多人的喜欢,是因为它既具有面向对象的概念,又保持了C语言高效的特点.STL 排序算法同样需要保持高效.因此,对于不同的需求,STL提供的不同的函数, ...

随机推荐

  1. 来看看Uber的司机支持服务签到及预约系统的架构设计思路

    Uber的Greenlight Hubs(GLH)在全球拥有超过700个分支机构,为合作车主提供从账户和支付到车辆检查和车主注册等各方面的人工支持.为了给合作车主创造更好的体验并提高客户满意度,Ube ...

  2. Oracle中转义下划线

    原意是查询出所有的月粒度模型,但是在oracle中,下划线也代表匹配单一任何字符,导致15分钟粒度的模型也被查询出来,在此,需要对下划线做转义,使其只表示下划线的含义,可以使用ESCAPE()函数. ...

  3. sql1999语法

    1.交叉连接 cross join 左右两个表进行组合,产生笛卡尔积累. 左边每一行分别于右表每一行数据匹配. 2.using using使用的前提是两个表右关联的字段需要对应,两个表的join查询. ...

  4. mysql update 子查询锁表问题

    mysql在Update带有子查询的时候,子查询的表会锁住,导致该表无法使用.比如 update A set comments = (select count(1) from B where id = ...

  5. IOS本地日志记录解决方案

    我们在项目中日志记录这块也算是比较重要的,有时候用户程序出什么问题,光靠服务器的日志还不能准确的找到问题 现在一般记录日志有几种方式: 1.使用第三方工具来记录日志,如腾讯的Bugly,它是只把程序的 ...

  6. Swift_TableView(delegate,dataSource,prefetchDataSource 详解)

    Swift_TableView(delegate,dataSource,prefetchDataSource 详解) GitHub import UIKit let identifier = &quo ...

  7. kali linux 安装 Mysql Can't read from messagefile 报错解决方案

    1.下载安装包 下载地点:https://dev.mysql.com/downloads/mysql/ 或者 wget http://dev.mysql.com/get/Downloads/MySQL ...

  8. Struts2+Spring+Hibernate整合开发(Maven多模块搭建)

    Struts2+Spring+Hibernate整合开发(Maven多模块搭建) 0.项目结构 Struts2:web层 Spring:对象的容器 Hibernate:数据库持久化操作 1.父模块导入 ...

  9. C++实现json字符串与map的转换

    开源资源库 jsoncpp-src-0.5.0.tar.gz:https://sourceforge.net/projects/jsoncpp/ jsoncpp-master.ziphttps://g ...

  10. 对fgets的理解

    gets()函数 因为用gets函数输入数组时,只知道数组开始处,不知道数组有多少个元素,输入字符过长,会导致缓冲区溢出,多余字符可能占用未使用的内存,也可能擦掉程序中的其他数据,后续用fgets函数 ...