首页 > 编程语言 >C++ STL基本用法概述(简洁版)

C++ STL基本用法概述(简洁版)

时间:2024-10-23 18:52:46浏览次数:3  
标签:返回 STL 元素 back C++ bound 概述 pop pair

vector

变长数组,倍增思想

基本函数

 size()   //返回元素个数,时间复杂度为o(1)
empty()   //返回a是否为空,时间复杂度为o(1)
clear()   //清空
front()/back()   //返回第一个数/最后一个数
push_back()   //最后插入一个数
pop_back()   //删掉最后一个数
begin() / end()   //第0个数/最后一个数的后面一个数
[]支持随机寻址(与数组相同)
支持比较运算, 按字典序

定义

//vector 定义
vector<int> a(10, 3);//定义一个长度为10,全为3

三种遍历方式

for (int i = 0; i < a.size(); i++) cout << a[i] << ' ';
cout << endl;
for (vector<int>::reverse_iterator i = a.begin(); i != a.end(); i++) cout << *i << ' ';
cout << endl;
for (auto x : a) cout << x << ' ';
cout << endl;

pair<int, int>

first,第一个元素
sencond,第二个元素
支持比较运算,以first为第一关键字,以second为第二关键字(字典序)
pair<int,pair<int,int>>p;    //pair存储3个元素

//pair初始化
pair<int,string>p;
p=make_pair(10,"C++");

string 字符串

基本函数

size()/length()   返回个数
empty()    是否为空
clear()    清空
string1+string2    字符串相加

string a="hello";
string b="world";
string c=a+b;

substr(i,j)  //返回某一字串,从下标i开始,共返回j个字符
c_str(a)  //返回字符串a的地址

queue 队列

push() 相对为插入一个元素
front()  返回队头元素
back() 返回队尾元素
pop()  弹出队头元素
无clear()函数

priority_queue 优先队列

默认是大根堆
push() 插入一个元素
top() 返回堆顶元素
pop() 弹出堆顶元素

stack  栈

size() 
empty()
无clear()
push()  栈顶插入元素
top() 返回栈顶元素
pop()  弹出栈顶元素

deque  双端队列

size()
empty()
clear()
front()  返回第一个元素
back()  返回最后一个元素
push_back()  在最后插入一个元素
pop_back()  弹出最后一个元素
push_front()  在队首插入一个元素
pop_front()  弹出队首元素
[ ] 支持随即寻址
begin()/end()  支持迭代器

set,map,multiset,multimap

基于平衡二叉树(红黑树),动态维护有序序列

基本函数

size()
empty()
clear()
begin()/end()  ++/--

set(元素不重复)/multiset(可重复)

inset()  插入一个数
find() 查找一个数
count() 返回某一个数的个数
erase() 
    1.输入一个数x,删除所有x
    2.输入一个迭代器,则删除这个迭代器
核心操作
lower_bound(x)  返回大于等于x的最小的数
upper_bound(x)  返回大于x的最小的数

map/multimap

inset()  插入的数是一个pair
find() 查找一个数
erase()  输入的参数是pair或者迭代器
[  ] 时间复杂度o(logn)
lower_bound(x)
upper_bound(x)

unordered_set,unorderd_map,unordered_muliset,unordered_multimap

基于哈希表

和上述类似,增删改查的时间为o(1)

但不支持lower_bound(x),upper_bound(x),迭代器的++,--等与排序相关的操作

bitset  压位

~,&,|,^
>>,<<
==,!=
[]
count()  返回有多少个1
any()  判断是否至少有一个1
none()  判断是否全为0
set()  把所有位置成1
set(k,v)  将第k位变成v
reset()  把所有为位变为0
flip()  等价于~
flip(k) 把第k位取反

标签:返回,STL,元素,back,C++,bound,概述,pop,pair
From: https://blog.csdn.net/fcc13461862452/article/details/143185500

相关文章

  • (分享源码)计算机毕业设计必看必学 上万套实战教程手把手教学JAVA、PHP,node.js,C++、pyth
    摘 要大数据时代下,数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化安全的要求,利用互联网服务于其他行业,促进生产,已经是成为一种势不可挡的趋势。在网络小说的要求下,开发一款整体式结构的小说网站,将复杂的系统进行拆分,能够实现对需求的变化快速响应、系统稳定性的保......
  • 计算机毕业设计项目推荐,基于协同过滤算法的短视频推荐系统设计与实现30213(开题答辩+程
    摘 要现阶段,社会的发展和科技的进步,以及大数据时代下纷繁数据信息的融合,使得人们在生产及生活过程中,都将会接收到各种类型的数据信息,而通过计算机技术与网络技术,则能够将众多人们所不了解或不常用的信息,以简单的模式转化并传递给人们,使得人们的生产及生活质量得以显著提升......
  • 计算机毕业设计项目推荐:基于Web的社区人员管理系统的设计36303(开题答辩+程序定制+全套
    摘要科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用ASP.NET技术建设社......
  • C++多线程同步和加锁的方式
    多线程同步和加锁的方式1.互斥锁(Mutex)互斥锁是一种常见的线程同步机制,用于保护共享资源,确保同一时间只有一个线程可以访问该资源。C++标准库提供了std::mutex类来实现互斥锁。std::mutex的lock()成员函数获取锁,使用完毕后调用unlock()释放锁。推荐使用std::lock_guard......
  • C++实现stack功能
    C++代码实现stack功能,具体代码如下:#include"stdafx.h"#include<iostream>#include<vector>#include<stdexcept>//forstd::out_of_rangetemplate<typenameT>classStack{private: std::vector<T>elements;//底层容器,用于存......
  • C++试题带答案
    阅读以下程序,回答问题1.试写出下列程序的输出结果与功能。 输出:2   sunny  24功能:求所有同学中年龄最大的同学2.试写出下列程序中函数fun()的功能及程序的输出结果。 函数fun()的功能:实现整数m的逆向输出程序的输出结果:543213.简述String类中Setc、Getc和Append三......
  • c++计时器
    c++计时器鼠标版#include<bits/stdc++.h>#include<windows.h>#definekd(vk)(GetAsyncKeyState(vk)&0x8000?1:0)usingnamespacestd;#defineSHAKE30voidShakeWindow(){ RECTrect; HWNDhwnd=GetConsoleWindow(); GetWindowRect(hwnd,&rect);......
  • C++刷题tricks整理
    是自己做题中整理的常用C++操作,此为存档。STL容器容器适配器,STL里面的vector/array/deque/set/map/unordered_set可以直接使用==比较是否相等:vector<int>a;deque<int>a;map<int,string>a;unordered_map<int,string>a;set<int>a;unordered_set<int>a;forward_lis......
  • 马拉车算法(C/C++)
    #1024程序员节|征文#马拉车算法(Manacher'sAlgorithm)是一种用于在字符串中查找最长回文子串的线性时间复杂度算法。该算法由UdiManacher在1980年代提出,因此得名。它的核心思想是利用已知的回文信息来减少不必要的比较,从而提高效率。算法步骤预处理字符串:为了处理奇数......
  • C++入门Day5 ~ 6:简单变量 & 数据类型 part 1 <8000字长文带你初步理解数据类型>
    这是我在学习中的一个小问题,希望对你也有所帮助:        问:数据类型和简单变量属于oop的基本概念吗?        答:不是!数据类型和简单变量本身并不属于面向对象编程(OOP)的基本概念,但它们是编程中的基础概念,面向对象编程会基于这些基础概念来构建更复杂的结构。......