把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

STL入门大全(待编辑)

 

前言:这个暑假才接触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(10,'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为从第0个位置找起,返回的是子串位置,如果没找到返回的则是一个超大值

     

 


 

 

双端队列deque

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

 

  • 双端队列的定义:
    #include<queue>//头文件和队列的是一样的
    deque<int> q;//定义也和队列差不多啦

     

  • 双端队列的赋值:
    #include<queue>
    deque<int> q;
    q.push_front(5);//从头部插入一个元素
    q.insert(d.begin()+1,2);//从中间(这里是指第二个位置)插入一个元素
    q.push_back(0);//从尾部插入一个元素
    
    这时候队列就为{5 2 0}啦

     

  • 双端队列的简单操作:
    q.clear() 清除队列中元素
    q.size() 求出队列大小
    q.pop_front() 从头部弹出
    q.pop_back() 从尾部弹出
posted @ 2019-08-01 20:29  Bn_ff  阅读(200)  评论(0编辑  收藏  举报
浏览器标题切换
浏览器标题切换end