ACM C++ STL学习总结

2024-09-04 23:38
文章标签 c++ 学习 总结 stl acm

本文主要是介绍ACM C++ STL学习总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

stl中比较常用的容器大都有些了解在此做一些容器概述。并将在近期逐渐的将每一个容器加深理解并将其整理总结。
先说一下自己的感受吧一开始接受如此大量的知识并将其熟练应用有些难度尽管在寒假提前提前了解了个大致。我选择acm的主要原因还是为了长知识打打基础并且我觉得这会对即将学习的c++11有很大帮助。
共性 容器本身可以理解为各种集合类型 在定义时要用<>将其中的数据元素类型括起来 并且每个容器通过成员函数来实现功能。并且他们的成员函数都有些名字和功能是相似的,在调用成员函数的时候都是用 变量名.成员函数的方法开始用。
一 栈 stack可以看作一头封闭的数组先进后出只能从一端操作。
头文件#include定义stack s s.empty()–返回bool型,表示栈内是否为空 s.size()–返回栈内元素个数
s.top()–返回栈顶元素值
s.pop()–移除栈顶元素
s.push()–向栈压入一个元素 a(s.push(a); )

二 队列queue与栈类似但不是一头封闭而是两边开放一头进另一头出先进先出
empty()–返回bool型,表示queue是否为空 size()-- 返回queue内元素个数
front()-- 返回queue内的下一个元素
back()-- 返回queue内的最后一个元素
pop()-- 移除queue中的一个元素
push(a)-- 将一个元素a置入queue中
优先队列priority_queue默认从大到小
升序priority_queue<int,vector,greater >q;
降序priority_queue<int,vector,less >q;
greater使内置类型从大到小排序,而less从小到大greater权值小的变进行交换 并且优先队列并不是单调增或减的而是二叉树每次比较只和上一根节点比较减少了比较次数
三vector动态数组 大小可以变换的数组empty()返回bool型,表示vector是否为空size()返回vector内元素个数
push_back(a)将元素a插入最尾端
pop_back()将最尾端元素删除四sort排序bool

next_permutation(begin, end);改变区间内元素的顺序,产生下一个排列。bool prev_permutation(begin, end);产生前一个排列。 这俩用于全排列很好用。upper_bound(begin, end, value); 返回>value的元素的第一个位置。第一个大于该元素的位置lower_bound(begin, end, value);返回>=value的元素的第一个位置。第一个该元素的位置(返回的是位置 地址!!)
五 set 将自动的将元素从小到大排序切没有重复 (去重有很大的作用)
count(a)判断a是否存在0,1
find(a)返回第一个a的迭代器若没有则返回end
map 映射 pair类型count(key) 返回键值为key的个数erase()可以根据键值或者迭代器来清除 用迭代器清除时回返回下一个元素的迭代器

这篇关于ACM C++ STL学习总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1137360

相关文章

C++ HTTP框架推荐(特点及优势)

《C++HTTP框架推荐(特点及优势)》:本文主要介绍C++HTTP框架推荐的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Crow2. Drogon3. Pistache4. cpp-httplib5. Beast (Boos

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

C++类和对象之初始化列表的使用方式

《C++类和对象之初始化列表的使用方式》:本文主要介绍C++类和对象之初始化列表的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C++初始化列表详解:性能优化与正确实践什么是初始化列表?初始化列表的三大核心作用1. 性能优化:避免不必要的赋值操作2. 强

C++迭代器失效的避坑指南

《C++迭代器失效的避坑指南》在C++中,迭代器(iterator)是一种类似指针的对象,用于遍历STL容器(如vector、list、map等),迭代器失效是指在对容器进行某些操作后... 目录1. 什么是迭代器失效?2. 哪些操作会导致迭代器失效?2.1 vector 的插入操作(push_back,

Linux区分SSD和机械硬盘的方法总结

《Linux区分SSD和机械硬盘的方法总结》在Linux系统管理中,了解存储设备的类型和特性是至关重要的,不同的存储介质(如固态硬盘SSD和机械硬盘HDD)在性能、可靠性和适用场景上有着显著差异,本文... 目录一、lsblk 命令简介基本用法二、识别磁盘类型的关键参数:ROTA查询 ROTA 参数ROTA

C#如何调用C++库

《C#如何调用C++库》:本文主要介绍C#如何调用C++库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录方法一:使用P/Invoke1. 导出C++函数2. 定义P/Invoke签名3. 调用C++函数方法二:使用C++/CLI作为桥接1. 创建C++/CL

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)