浅谈STL(未完)
前言:
(1)学习资料——《算法笔记》第六章、《常用基础数据结构》文档

(2)测试平台——Codeup新家(《算法笔记》对应OJ)、洛谷、YCOJ

(3)学习时间——2020.6.2~


学习内容汇总:

一、Vector

1、简介:vector向量,也叫“变长数组”

2、运用:

(1)定义:vector<typename> name;
  
  注意:typename可以是任意类型,但如果typename也是一个STL容器,则在“>>”之间需要打空格;name也可以是数组
  
  (2)访问:①直接通过下标访问(0~size()-1)
  
  ②通过迭代器访问:vector<typename>::iterator it;
  
  注意:只有vector和string支持*(it+i)的访问方式
  
  (3)操作:①添加push_back()
  
  ②删除pop_back() 
  
  ③插入insert()
  
  ④清空clear()
  
  ⑤删除erase(it)或erase(first,last)
  
  ⑥长度size()
  
  (4)常见用途:①因为可以“变长”,所以对于储存数据很好用
  
  ②用邻接表存储图

3、题目:

(1)http://codeup.cn/contest.php?cid=100000596 (Codeup两道)

(2)打印锯齿矩阵(计蒜客)


 二、Set

1、简介:set集合,可将元素去重并升序排列

2、运用:

(1)定义:set<typename> name; 注意同上

(2)访问:只能通过迭代器:set<typename>::iterator it;

(3)操作:①插入insert()

②返回set中对应值为value的迭代器find(value)

③删除erase(it)或erase(value)或erase(first,last)

④长度size()

⑤清空clear()

(4)常见用途:主要用于处理元素去重并排序的问题

(5)补充:①不去重只升序:multiset  ②只去重不升序:unordered_set

3、题目:

(1)http://codeup.cn/contest.php?cid=100000597  (Codeup)

(2)http://120.77.248.79/problem/2021102  计算集合的并(YCOJ)


 三、String

1、简介:string用于处理字符串

2、运用:

(1)定义:string s;

(2)读入读出:cin和cout

(3)迭代器:string::iterator it;

(4)可将两个string直接拼凑起来或进行比较大小(规则是字典序)

(5)操作:①长度length()或size()

②在pos位插入strinsert(pos,str)或将【it2,it3)插入到it的的位置insert(it,it2,it3)

③删除同vector或从pos位开始删除length个字符erase(pos,length)

④清空clear()

⑤返回从pos位开始长度为len的子串substr(pos,len)

⑥当str是s的子串时返回str第一次出现的位置find(str)或从s的pos位开始匹配str,返回值同上find(str,pos)

⑦把s从pos位开始、长度为len的子串替换为strreplace(pos,len,str)或把s的迭代器【it2,it3)范围的子串替换为strrelace(it2,it3,str)

3、题目:

(1)http://codeup.cn/contest.php?cid=100000598  字符串处理(Codeup)


四、Map

1、简介:map映射,将任一类型映射到任一类型且会按键自动升序

2、运用:

(1)定义:map<typename1,typename2> name;typename1为键的类型,typename2为映射值的类型

(2)访问:①通过下标访问,因为键的值唯一

②迭代器map<typename1,typename2>::iterator it;,然后用it->first来访问键、用it->second来访问值

(3)操作:①查找键为key的迭代器find(key)

②删除erase(it)或erase(key)删除键key或删除区间erase(first,last)

③长度size()

④清空clear()

3、常见用途:①字符与整数之间的关系

②map当作bool用

③字符串与字符串的映射

4、补充:一个键对应多个值,multimap

5、题目:

(1)http://codeup.cn/contest.php?cid=100000599  (Codeup)

(2)蒜头军破案——二维map  (计蒜客)

(3)蒜头军的藏书——字符串与整数  (计蒜客)

(4)小信学英语——字符串与整数  (YCOJ)

(5)小信的面试  (YCOJ)

(6)水果店——二维map  (YCOJ)


STL标准函数库学习小总结的更多相关文章

  1. C++STL标准库学习笔记(三)multiset

    C++STL标准库学习笔记(三)multiset STL中的平衡二叉树数据结构 前言: 在这个笔记中,我把大多数代码都加了注释,我的一些想法和注解用蓝色字体标记了出来,重点和需要关注的地方用红色字体标 ...

  2. C++STL标准库学习笔记(一)sort

    前言: 近来在学习STL标准库,做一份笔记并整理好,方便自己梳理知识.以后查找,也方便他人学习,两全其美,快哉快哉! 这里我会以中国大学慕课上北京大学郭炜老师的<程序设计与算法(一)C语言程序设 ...

  3. C++STL标准库学习笔记(五)set

    前言: 在这个笔记中,我把大多数代码都加了注释,我的一些想法和注解用蓝色字体标记了出来,重点和需要关注的地方用红色字体标记了出来,这一篇后面主要都是我的记录了,为了防止大片蓝色字体出现,后面就不改蓝色 ...

  4. C++STL标准库学习笔记(二)二分查找

    二.STL中的二分查找算法 1.binary_search 2.lower_bound 3.upper_bound 记得#include<algorithm>! 前言: 在这个笔记中,我把 ...

  5. C++STL标准库学习笔记(四)multiset续

    自定义排序规则的multiset用法 前言: 在这个笔记中,我把大多数代码都加了注释,我的一些想法和注解用蓝色字体标记了出来,重点和需要关注的地方用红色字体标记了出来,只不过这一次的笔记主要是我的补充 ...

  6. 分治算法(二分查找)、STL函数库的应用第五弹——二分函数

    分治算法:二分查找!昨天刚说不写算法了,但是突然想起来没写过分治算法的博客,所以强迫症的我…… STL函数库第五弹——二分函数lower_bound().upper_bound().binary_se ...

  7. STL函数库的应用第四弹——全排列(+浅谈骗分策略)

    因为基础算法快学完了,图论又太难(我太蒻了),想慢慢学. 所以暂时不写关于算法的博客了,但又因为更新博客的需要,会多写写关于STL的博客. (毕竟STL函数库还是很香的(手动滑稽)) 请出今天主角:S ...

  8. dlib库学习之一

    dlib库学习之一 1.介绍 跨平台 C++ 通用库 Dlib 发布 ,带来了一些新特性,包括概率 CKY 解析器,使用批量同步并行计算模型来创建应用的工具,新增两个聚合算法:中国低语 (Chines ...

  9. Standard C 语言标准函数库速查(彩色的函数列表,十分清楚)

    Standard C 语言标准函数库速查 (Cheat Sheet) wcstombs 函数说明 #include <stdlib.h> size_t mbstowcs(wchar_t * ...

随机推荐

  1. Java实现洛谷P1250 种树 (暴力)

    P1250 种树 输入输出样例 输入 9 4 1 4 2 4 6 2 8 9 2 3 5 2 输出 5 PS: 我种最少的树,意味着我的树要最多的被利用,意味着,我的树要尽可能的靠中间种, 也就是我把 ...

  2. Java实现 LeetCode 598 范围求和 II(最小值相乘)

    598. 范围求和 II 给定一个初始元素全部为 0,大小为 m*n 的矩阵 M 以及在 M 上的一系列更新操作. 操作用二维数组表示,其中的每个操作用一个含有两个正整数 a 和 b 的数组表示,含义 ...

  3. Java实现 LeetCode 172 阶乘后的零

    172. 阶乘后的零 给定一个整数 n,返回 n! 结果尾数中零的数量. 示例 1: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零. 示例 2: 输入: 5 输出: 1 解释: 5! ...

  4. Java实现蓝桥杯G将军

    G将军有一支训练有素的军队,这个军队除开G将军外,每名士兵都有一个直接上级(可能是其他士兵,也可能是G将军).现在G将军将接受一个特别的任务,需要派遣一部分士兵(至少一个)组成一个敢死队,为了增加队员 ...

  5. Java实现最小费用最大流问题

    1 问题描述 在最大流有多组解时,给每条边在附上一个单位费用的量,问在满足最大流时的最小费用是多少? 2 解决方案 下面代码所使用的测试数据如下图: package com.liuzhen.pract ...

  6. Linux目录处理命令cd、pwd、rmdir、cp、mv、rm详解

    命令cd详解 命令cd(英文原意:change directory),命令路径及执行权限为: 可以看到它的路径为/usr/bin/cd,因此,它的执行权限是所有用户 基本功能是切换目录,例如:cd . ...

  7. STM32串口打印的那些知识

    常规打印方法 在STM32的应用中,我们常常对printf进行重定向的方式来把打印信息printf到我们的串口助手.在MDK环境中,我们常常使用MicroLIB+fputc的方式实现串口打印功能,即: ...

  8. ojdbc6中OraclePreparedStatement的ArrayIndexOutOfBoundsException异常BUG-6396242

    现场信息 Caused by: java.lang.ArrayIndexOutOfBoundsException: -32203 at oracle.jdbc.driver.OraclePrepare ...

  9. python下载及安装步骤

    Python安装 1.浏览器打开网址:www.python.org 2.根据电脑系统选择下载 3.确定电脑系统属性,此处我们以win10的64位操作系统为例 4.安装python 3.6.3 双击下载 ...

  10. loadrunner常见问题及解决办法

    LoadRunner录制脚本时不弹出IE浏览器解决方法:启动浏览器,打开Internet选项对话框,切换到高级标签,去掉"启用第三方浏览器扩展(需要重启动)"的勾选,然后再次运行V ...