stl
文章平均质量分 50
学习c++标准程序库的笔记
Obrigado.
不断进步,懂得分享
展开
-
蚂蚁集团2022-09-15笔试
子串的定义:一个字符串取一段连续的区间得到的新字符串。例如"arcaea"的子串有"arc"、"ca"等,但"ara”则不是它的子串。例如,可以把’b’变成两个’a’,可以把z’变成两个’y。请你输出长度最短的合法字符串,有多解时输出任意即可。一个字符串,代表小红操作前的字符串。如果有多个合法解,输出任意一个合法字符串即可。小红定义一个字符串是好串,当且仅当只有一个字符出现的次数为奇数,其它字母均为偶数。一个不超过200000的,仅由小写字母组成的字符串。一个正整数x,代表最终的’a’的数量。原创 2022-09-15 20:53:50 · 3177 阅读 · 0 评论 -
秒杀:只出现一次的数字系列
给定一个数组,数组中只有一个元素出现1次,其余元素都出现k次,请找出出现1次的元素;原创 2022-08-14 14:54:00 · 175 阅读 · 0 评论 -
牛客:BM22 比较版本号
问题描述解题思路正则,使用'.'进行分割,然后使用结果数组进行判断,对于前导0,字符串转数字函数会自动处理掉。stringstream,自己使用的是这个方法,使用getline进行分割,随后进行相互判断,因为两个版本号长度可能不同(用点分隔后的小段),所以在整体处理完后,需要特别处理剩余的。ac代码int compare(string version1, string version2) { // write code here istringstream is原创 2022-03-13 21:15:37 · 341 阅读 · 0 评论 -
list::sort源码对比(侯捷老师源码剖析和c++11中当前使用的库中的实现)
首先看一下侯捷老师《STL源码剖析》中的源码// list 不能使用STL 算法 sort(),必须使用自己的 sort() member function,// 因为STL算法sort() 只接受RamdonAccessIterator.template <class T, class Alloc>void list<T, Alloc>::sort() { // 如果为空链表或只有一个元素的链表,则什么也不做 if (node->next == nod原创 2021-10-04 20:56:37 · 477 阅读 · 0 评论 -
子集生成:递归、迭代、二进制
子集生成,给定一个数组,数组中包含一些元素(简单起见,假设其中包含的是数字)生成该集合所有的子集。比如:{1, 2, 3}子集为{{}, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}}本题比较简单,有点像01背包问题。解题思路如下:首先,将空集合放入结果集。然后遍历源集合中的每个元素,往空集合中加还是不加。话说不太明白,举个例子{a, b, c}首先结果集合中添加{}空集合然后将结果集中的元素去除,对第一个源集合中的元素,也就是a,进.原创 2021-06-27 17:30:08 · 309 阅读 · 0 评论 -
map及其运行时的排序规则创建,map/mutlmap插入对象的三种方法
本文摘自c++标准程序库,仅供学习撰写仿函数(方法),及实现运行期排序/* 本程序设计一下几个知识点: 1,如何使用map 2,如何撰写和使用仿函数 3,如何在执行期定义排序准则 4,如何在“不在乎大小写”的情况下比较字符串*/#include<iostream>#include<iomanip>#include<map>#includ...原创 2020-03-26 22:05:00 · 370 阅读 · 0 评论 -
c++stl仿函数(functors, function objects)
引用c++标准函数库的定义:传递给算法的“函数型参数”,并不一定得是函数,可以是行为类似函数的对象,这种对象称为仿函数(一般速度比一般函数快)。何为行为像个(类似)函数?:是指可以使用小括号传递参数,来调用某个东西。例如:function(arg1,arg2);1,一个简单例子#include<iostream>#include<list>#include<...原创 2020-03-24 22:15:56 · 232 阅读 · 0 评论 -
STL更易型算法remove()
移除(removing)元素算法remove()自某个区间删除元素,然而如果使用它来删除容器的所有元素,其行为可能不能达到预期。例如:#include<iostream>#include<list>#include<algorithm>#include<iterator>using namespace std;int main() ...原创 2020-03-24 20:19:47 · 183 阅读 · 0 评论 -
c++STL的三种迭代器配接器[insert iterator(安插性迭代器),Stream iterator(流迭代器),reverse iterators(逆向迭代器)]
此文只做简单介绍(摘自c++标准函数库)insert iterator(安插性迭代器)可解决算法的“空间不足”问题,它会促使目标区间的大小按需增长。insert iterator内部将接口做了新的定义:如果你对某个元素设值(assign),会引发“对其所属群集的安插(insert)操作”。至于插入位置是容器的最前或最后,或是某特定位置,视情况而定。“单步前进(step forward)...原创 2020-03-23 15:01:38 · 275 阅读 · 0 评论