
STL
文章平均质量分 54
一打雪碧
这个作者很懒,什么都没留下…
展开
-
键为基础数据类型的map、键为结构体的map
基础类型默认按照键的大小,将键值对从小到大排序map<int,int> mp;如图所示,定义了一个从int -> int类型的map,并且,如果往里面插入几个键值对,键值对是按照键的大小,从小到大进行排序的。示例#include <bits/stdc++.h>using namespace std;int main(){ map<int,int> mp; mp[9] = 1; mp[100] = 1; mp[1原创 2022-03-11 17:11:32 · 1287 阅读 · 0 评论 -
使用优先队列priority_queue来优化Dijkstra
代码如下:#include<bits/stdc++.h>using namespace std;struct node{ int u,dis; node(){} node(int _u,int d):u(_u),dis(d){} bool operator < (const node &b)const{ return dis > b.dis; }};const int maxn = 1000;const原创 2021-03-10 11:49:18 · 392 阅读 · 0 评论 -
优先队列和结构体的运算符重载
自定义结构体是做题必须要学会的,而且经常需要用到自定义其排序规则。优先队列也是,对于基本数据类型来说,不用自定义优先规则,但是对于自定义数据类型来说,确实是需要自己定义其内部的排序规则的。今天发现原来两者的定义规则可以使用同一种方式来定义。结构体规则定义struct node{ int x,y; node(){} node(int xx,int yy):x(xx),y(yy){} bool operator < (const node &b) const原创 2021-03-10 11:05:15 · 518 阅读 · 0 评论 -
PAT甲级1071 Speech Patterns(测试点2错误)以及关于unordered_map的一点说明
原题链接PAT甲级1071 Speech Patterns坑点:本题重新定义了单词。The input contains at least one alphanumerical character, i.e., one character from the set [0-9 A-Z a-z].以上是说有效字符是[0,9]、[a,z]、[A,Z],其余字符都可以看作是分隔符Here a “word” is defined as a continuous sequence of alphan.原创 2021-03-05 18:05:58 · 377 阅读 · 0 评论 -
PAT1063 Set Similarity(测试点4超时)set使用
原题链接1063 Set Similarity这道题挺简单的,就是给好几个数列,每个数列里面有可能有重复元素,再给定几个查询,每个查询给了两个数列编号(从1开始),问在这两个数列中都出现的数的个数nc 占 两个数组中的去掉重复数据后的数的个数nt的百分比。比如说99 87 10187 101 5 87这两个数组中,重复出现的元素为87,101,故nc = 2。而所有数据为5、87、99、101,即nt = 4,所以占比为50.0%。因为原数列中就可能包含有重复元素,所以使用unorder.原创 2021-03-05 11:35:16 · 238 阅读 · 2 评论 -
PAT甲级A11411141 PAT Ranking of Institutions超时问题
原题链接添加链接描述思索一番,该题还是写一篇文章,因为对于我帮助挺大的,其实也是困扰了半天。直观思路本题,最直观的思路是,使用unordered_map < string,double > 建立学校到成绩的映射,使用unordered_map < string,int > cnt建立从学校到人数的映射。使用vector < string > total 来存储下所有出现过的学校。代码如下#include <bits/stdc++.h>using原创 2021-02-27 21:41:42 · 193 阅读 · 0 评论 -
结构体的初始化
一般在做算法题时,往往需要用结构体来存储下一个具体的对象,比如说,一个学生,有不超过8位的姓名name,16位学号id,int类型的成绩score。则可以使用如下的结构体,并且建立构造函数。struct student{ char name[10],id[20]; int score; student(){}//注意点1 student(char _name[10],char _id[20],int _score){//注意点2 strcpy(name,_原创 2021-02-24 19:56:46 · 316 阅读 · 0 评论 -
sort函数
对于常规非结构体类型的数组或者是向量,可以使用sort进行排序。从小到大排序#include <iostream>#include <vector>#include <algorithm>using namespace std;void show(vector<int> &v){ for(auto n:v) printf("%d ",n);}int main(){ vector<int> v{4,8,原创 2021-02-21 15:35:30 · 137 阅读 · 0 评论 -
使用C++的transform函数实现string的大小写转换
C++提供了transform函数可以用来实现将string中的字母全部转换为大写或者是小写#include <string>#include<iostream>#include <algorithm>using namespace std;int main(){ string str = "abcdefgHIJKLMN"; //转小写 transform(str.begin(),str.end(),str.原创 2021-01-31 11:14:02 · 2453 阅读 · 3 评论 -
结构体的排序函数以及priority_queue优先级、自定义的结构体struct作为关联性容器map、unordered_map的key
作为map的keymap是有序的,其中的插入元素按照key的大小进行排序,对于一般的数据类型,比如说int、string这两种常用的类型来说,可以直接作为map的key使用,但是对于自定义的struct结构体来说,就不可以直接使用其作为key进行插入,这是因为,编译时,无法进行比较大小。具体原理不赘述。如果想使用自定义的struct作为key,可以这么修改。#include <iostream>#include <map>using namespace std;str原创 2021-01-21 21:11:59 · 456 阅读 · 0 评论 -
string和vector
string和vector这两个容器很像初始化#include <iostream>#include <string>using namespace std;unordered_map<int,string> pos;int main(){ string ans=string(5,'a'); cout<<ans; return 0;}//运行结果aaaaa注意ans在定义是赋了初值,即“aaaaa”。而v原创 2021-01-20 20:55:11 · 480 阅读 · 0 评论 -
priority_queue
priority_queue在算法题中,经常用到priority_queue函数,非常实用。可以用于基本数据类型,直接找到最大或者最小的k个数。更强大的是,可以自定义结构体的排序规则,使用结构体的优先队列,对于有的题,往往一击致命。在2020年暑期pat的第四题,使用结构体的priority_queue是非常好的一个方法。今天做力扣,遇到一道题,也可以使用priority_queue。原题链接1337. The K Weakest Rows in a MatrixAC代码如下。class S原创 2021-01-18 21:50:01 · 127 阅读 · 0 评论 -
vector
一、将一个vector中的全部元素插入另一个vector中#include <iostream>#include <vector>using namespace std;int main(){ vector<int> ans(10,3); vector<int> temp(20,5); ans.insert(ans.end(),temp.begin(),temp.end()); return 0;}使用in原创 2021-01-17 23:09:27 · 266 阅读 · 0 评论