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++中全局变量和局部变量的区别

《C++中全局变量和局部变量的区别》本文主要介绍了C++中全局变量和局部变量的区别,全局变量和局部变量在作用域和生命周期上有显著的区别,下面就来介绍一下,感兴趣的可以了解一下... 目录一、全局变量定义生命周期存储位置代码示例输出二、局部变量定义生命周期存储位置代码示例输出三、全局变量和局部变量的区别作用域

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

C++中NULL与nullptr的区别小结

《C++中NULL与nullptr的区别小结》本文介绍了C++编程中NULL与nullptr的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编... 目录C++98空值——NULLC++11空值——nullptr区别对比示例 C++98空值——NUL

C++ Log4cpp跨平台日志库的使用小结

《C++Log4cpp跨平台日志库的使用小结》Log4cpp是c++类库,本文详细介绍了C++日志库log4cpp的使用方法,及设置日志输出格式和优先级,具有一定的参考价值,感兴趣的可以了解一下... 目录一、介绍1. log4cpp的日志方式2.设置日志输出的格式3. 设置日志的输出优先级二、Window

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性: