前言:这个暑假才接触STL,仿佛开启了新世界的大门(如同学完结构体排序一般的快乐\(≧▽≦)/),终于彻底领悟了大佬们说的“STL大法好”(虽然我真的很菜www现在只学会了一点点...)这篇blog主要是总结一下一些简单用法,是怕我在要用时忘记又要去搜很麻烦,有哪里写的不对了请戳我~(如果你是大佬请跳过www这一篇是蒟蒻用来入门滴qwq)

备注:本篇blog参考了https://www.cnblogs.com/skyfsm/p/6934246.html,https://blog.csdn.net/Wchenchen0/article/details/81042596,https://www.cnblogs.com/cff2121/p/9892045.html,都写的很棒,大家可以去看看,特此感谢。


string

  • 最开始学语言时教练就介绍说string是一项c++特有的超强大的数据类型,当时作为超级小白的我被字符串搞到脑袋发蒙于是并没有任何兴趣去了解...(现在做字符串的模拟还是很崩溃QAQ),直到最近在学STL,看了前言的那篇博客,重新爱上string!接下来总结几个常用又方便的string函数~
  • string的定义:
  • #include<bits/stdc++.h>//#include<string>好像这个头文件是专门的,但是我一般都用的万能头,对于这个不太了解,详细了解可问度娘~
    string s;

    这样子就定义了一个字符串s啦

  • string的赋值
  • string s;//定义一个空串s
    string s="qwq"//合法赋值 cin>>s;//输入字符串s
    s=a;//成功赋值 string a;
    cin>>a;
    s.assign(a);//和上面一样的哎 s.assign(,'a');//给s赋值10个a string a,b;
    a="orz";
    b=" you";
    s=a+b;//合法赋值(这个真的好神奇www)
    cout<<s;//s此时为"orz you" //在进行加减操作时两个变量至少要有一个为string类型
    s=a+" you";//合法
    s="orz"+" you";//错误
  • 但是当我们要读入“Hello   world!”时,cin>>a,a此时为“Hello”,因为cin>>string一旦碰到空格就会停下来,这时我们可以用两个string读入。但是我们又不想开那么多string存怎么办呢qwq?这时候就可以用到getline
  • string s;
    getline(cin,s);
    cout<<s;
  • 这时s就可以读入一整行啦~\(≧▽≦)/~
  • 字符串的简单操作
s.empty() 如果s为空串,则返回true,否则返回false
s.length() 返回s字符串的长度
isalnum(c) 如果c是字母或数字,则为true
isalpha(c) 如果c是字母,则为true
isdigit(c) 如果c是数字,则为true
islower(c) 如果c为小写字母,则为true
isupper(c) 如果c为大写字母,则为true
tolower(c) 如果c为大写字母则将c转换为小写字母,否则直接返回c
toupper(c) 如果c为小写字母则将c转换为大写字母,否则直接返回c
  • ps:字符串的遍历应从0~s.length()-1(错了无数次!高能!QAQ)
  • string神奇函数(待补充)
  1. 找子串:这个真的是太好用啦!!!想起以前处理字符串还要一个个去循环遍历qwq这个真的是神器!

    string s="%%%you";
    string a="%you";
    cout<<s.find(a,);//0为从第0个位置找起,返回的是子串位置,如果没找到返回的则是一个超大值

双端队列deque

  • 队列都还没有学好前几天模拟考又碰到要用双端队列优化的QAQ只好两块硬骨头一起啃了qwq
  • 在网上找了好几篇双端队列blog,基本上讲的都是原理看得我这种蒟蒻一脸懵(瑟瑟发抖,干脆来总结一下从各位大佬及教练及自行体会出来的简单用法
  • 双端队列的定义:

    #include<queue>//头文件和队列的是一样的
    deque<int> q;//定义也和队列差不多啦
  • 双端队列的赋值:
    #include<queue>
    deque<int> q;
    q.push_front();//从头部插入一个元素
    q.insert(d.begin()+,);//从中间(这里是指第二个位置)插入一个元素
    q.push_back();//从尾部插入一个元素 这时候队列就为{ }啦
  • 双端队列的简单操作:
    q.clear() 清除队列中元素
    q.size() 求出队列大小
    q.pop_front() 从头部弹出
    q.pop_back() 从尾部弹出

STL入门大全(待编辑)的更多相关文章

  1. Effective STL 中文版(大全)

    Effective STL 中文版(大全) 作者:winter 候捷说,对于STL,程序员有三个境界,开始是使用STL,然后是理解STL,最后是补充STL.Effective STL是一本非常好的书, ...

  2. STL入门

    STL入门 STL的组成 六大组件 容器container 算法algorithm 迭代器iterator 仿函数function object 适配器adaptors 空间配制器allocator ...

  3. 20140725 快速排序时间复杂度 sTL入门

    1.快速排序的时间复杂度(平均时间复杂度为) 数组本身就有序时,效果很差为O(n^2) 2.STl入门 (1) C++内联函数(inline)和C中宏(#define)区别 内联函数有类型检查,宏定义 ...

  4. GitHub标星2.6万!Python算法新手入门大全

    今天推荐一个Python学习的干货. 几个印度小哥,在GitHub上建了一个各种Python算法的新手入门大全,现在标星已经超过2.6万.这个项目主要包括两部分内容:一是各种算法的基本原理讲解,二是各 ...

  5. [C++]C++ STL库函数大全

    #include <assert.h> //设定插入点 #include <ctype.h> //字符处理 #include <errno.h> //定义错误码 # ...

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

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

  7. 【c++】标准模板库STL入门简介与常见用法

    一.STL简介 1.什么是STL STL(Standard Template Library)标准模板库,主要由容器.迭代器.算法.函数对象.内存分配器和适配器六大部分组成.STL已是标准C++的一部 ...

  8. 【Unity入门】场景编辑与场景漫游快捷键

    版权声明:本文为博主原创文章,转载请注明出处. 打开Unity主窗口,选择顶部菜单栏的“GameObject”->“3D Object”->“Plane”在游戏场景里面添加一个面板对象.然 ...

  9. [技术] OIer的STL入门教程

    注: 本文主要摘取STL在OI中的常用技巧应用, 所以可能会重点说明容器部分和算法部分, 且不会讨论所有支持的函数/操作并主要讨论 C++11 前支持的特性. 如果需要详细完整的介绍请自行查阅标准文档 ...

随机推荐

  1. coding++:解决Not allowed to load local resource错误-SpringBoot配置虚拟路径

    1.在SpringBoot里上传图片后返回了绝对路径,发现本地读取的环节上面出现了错误(Not allowed to load local resource),一开始用的是直接本地路径. 但是在页面上 ...

  2. 为何给CheckBox设置了checked属性还是没有勾选,行内样式都显示了checked

    为何给CheckBox设置了checked属性还是没有勾选,行内样式都显示了checked 正常情况下我们设置给CheckBox一个checked属性后一般都会选中 然而我今天在做案例的时候却遇到了类 ...

  3. flask中的表单文件上传

    在表单中上传文件时,一定要加入 enctype="multipart/form-data" 属性 为什么要加入这个属性呢: enctype就是encodetype就是编码类型的意思 ...

  4. nosql Redis命令操作详解

    Redis命令操作详解 一.key pattern 查询相应的key (1)redis允许模糊查询key 有3个通配符 *.?.[] (2)randomkey:返回随机key (3)type key: ...

  5. c#的全局异常捕获

    以下操作在Program.cs中 1.最简单的方式try...catch.. 一般用在某一段容易出错的代码,如果用在整个软件排查,如下所示 static void Main() { try { App ...

  6. python学习第四节 迭代器 生成器

    1:什么是迭代 可以直接作用于for循环的对象统称为可迭代对象(Iterable). 可以被next()函数调用并不断返回下一个值的对象称为迭代器(Iterator). 所有的Iterable均可以通 ...

  7. Centos7 搭建FTP服务

    安装vsftpd yum install -y vsftpd 修改配置文件 cd /etc/vsftpd user_list # 白名单 ftpusers # 黑名单 vsftpd.conf # 配置 ...

  8. Vertica的这些事(十四)——Vertica实时消费kafka实现

    一. 安装环境 Vertica官方提供了消费kafka的方法,需要注意版本对应 消费kafka原理,是Vertica提供的Udx 首先需要安装相应的环境 /${vertica}/packages/ka ...

  9. (C#、JavaScript)面向对象的程序设计

    面向对象(OOP)的理解 喜欢程序的朋友们,大家应该都听过一句话"万物皆对象",感觉老牛X了. 面向对象的程序设计,它是围绕真实世界来设计程序的. 面向对象三要素:封装.继承.多态 ...

  10. 第一次将本地项目push到github

    问题:github有一个空项目,将本地项目上传到github空项目时,报错如下 $ git push --set-upstream git@github.com:dslu7733/promise.gi ...