![](https://img-blog.csdnimg.cn/20210115101710504.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
STL使用
文章平均质量分 64
stl
山顶夕景
实践出真知
展开
-
C++刷题常用STL容器总结
1.vector动态数组,方便动态扩容,方便的变量初始化(int类型默认初始化为0,bool默认初始化为false),可以用来实现邻接表(结点数太多的图)。头文件#include<vector>using namespace std;定义//typename可以是基本数据类型/其它标准STL容器/自定义结构体vector<typename>name;vec...原创 2020-01-22 12:47:43 · 1640 阅读 · 2 评论 -
【HJ48】从单链表中删除指定值的结点(STL使用)
1.题目2.思路(1)首先读懂题目,如第一个测试用例在插入结点中:1<-2,下面一行又3<-2,第二行指在2的后面插入新结点3,所以这时3的结点后面为1结点。(2)可以不真的建立链表,而直接使用STL的vector模拟:先将head头结点push进vector中,然后根据查找head结点,返回对应的迭代器it:——如果it非结尾,即直接将back结点插入到迭代器为it+1处,即后面会向后腾出位置。注意之前没咋用过erase,这个用法是erase(迭代器)。——如果it为结尾,即直原创 2021-02-19 22:31:52 · 812 阅读 · 0 评论 -
【LeetCode347】前K个高频元素(pair)
1.题目2.思路(1)方法和【LeetCode215】数组中的第k个最大元素(小顶堆—priority_queue)相同(利用小顶堆,不断加入且保持优先队列恰好为k个元素)。不过注意是将每个元素出现次数加入小顶堆中——所以一开始用unordered_map统计每个元素的出现次数,而因为哈希表的key(即元素)也需要保存,所以优先队列priority_queue里的元素不是int型了:可以用pair<int,int>。(2)在优先队列的排序参数需要重写(因为若直接用greater则是先对p原创 2021-02-15 23:44:23 · 780 阅读 · 2 评论 -
【LeetCode5665】从相邻元素对还原数组(STL&DFS)
文章目录1.题目2.思路3.代码4.不用dfs版本1.题目2.思路(1)不可以像以前用vector数组存储邻接表(否则会报出下面的错误)——因为数组的元素可能是负数!!!并木有vector<int,vector<int>>,所以使用map<int,vector<int>>adj存储邻接表,所以后面dfs用到的vis访问数组也是map<int,bool>类型而非vector<bool>vis。用undered_map显然比m原创 2021-02-01 01:24:25 · 822 阅读 · 1 评论 -
递归实现全排列&使用next_permutation
递归实现全排列&使用STL1.递归版栗子:对1、2、3三个数字进行全排列,并按照字典序从小到大的顺序进行输出1~n的全排列。【思路】递归角度,如果把问题描述成“输出1~n这n整数的全排列”——将原问题分为若干子问题:“输出以1开头的全排列”、“输出以2开头的全排列”、“输出以3开头的全排列”。。。“输出以n开头的全排列”。【做法】数组P——存放当前的排列;数组hashtable[x]——为true时即整数x已经在数组P中。(1)按顺序将P数组的第1到n位中填入数字,假设填好了P[1]原创 2021-01-07 16:17:02 · 883 阅读 · 0 评论 -
【PIPIOJ-1065】统计气球(水题)
1.题目众所周知,在打ACM比赛的时候,队伍只要通过了一个题,志愿者们就会送过来相对应颜色的气球 (志愿者小姐姐好漂亮QAQ)现在刚刚进行完一场ACM比赛,PIPI拿到了所有的气球颜色,但是他想知道哪个题通过的人最多,你能告诉PIPI通过队伍最多的题所对应的气球颜色吗?输入输入包含多组测试用例。对于每一个测试样例,第一行输入一个数字n (0<n<=1000),代表气球的数目。以下n行每一行是一个长度不超过15为字符串s,代表气球的颜色。输入以0为结尾,对应的样例无需处理。输出对原创 2021-01-26 23:06:22 · 1095 阅读 · 0 评论 -
vector的find及迭代器使用
vector本身没有find方法,是利用了头文件algorithm#include<iostream>#include<algorithm>//注意要加这个#include<vector>int main(){ using namespace std; vector<int> vec; vec.push_back(1); vec....原创 2020-01-09 18:37:17 · 1340 阅读 · 0 评论 -
【1022】Digital Library(map)
1.题目https://pintia.cn/problem-sets/994805342720868352/problems/994805480801550336给出N本书的编号、书名、作者关键词、出版社及出版年份,然后根据某个除编号外的信息来查询所有满足该信息的书的编号,并要求按编号从小到大顺序输出。2.思路map<string,set<int>>分别建立书名、作者、关键词、出版社及出版年份与编号的map映射。关键词的提取:每本书都可能有多个关键词,需要将这些关键词分离开原创 2021-01-12 09:09:55 · 652 阅读 · 0 评论 -
【1047】Student List for Course(vector)
1.题目https://pintia.cn/problem-sets/994805342720868352/problems/994805433955368960给出选课人数和课程数,再分别给出每个人的选课情况,要输出每门课的选课人数和选了该课的所有学生的姓名。2.思路和之前的A1039做法一样(只不过是输入和输出倒过来了)。(1)用二维数组char[N][5]存放输入的姓名,其中char[i]表示第i个姓名。以vector数组course[i]存放所有选第i门课的学生编号。(2)在读入数据时原创 2021-01-11 23:32:44 · 668 阅读 · 0 评论 -
【1039】Course List for Student(vector)
1.题目https://pintia.cn/problem-sets/994805342720868352/problems/994805447855292416给出N个学生,K门课。给出每门课号,报名人数N,给出N个学生的名字,最终要输出每个学生的名字及其选课数,和选得所有课程编号。2.思路读取数据将课程编号加入所有选择该课的学生中,最后依次输出每个学生的选课情况。(1)学生通过姓名的方式给出;——如果用STL的map实现姓名与学生编号的映射,最后一组数据过大,导致用map和string会原创 2021-01-11 15:56:50 · 721 阅读 · 0 评论