c++知识汇总
旧林墨烟
惠州学院大四学生,热爱算法竞赛,获得蓝桥杯、天梯赛、ccpc、icpc等多项奖项,熟悉c++、java语言,目前处于求职状态
展开
-
c++ 万能头文件
include<bits/stdc++.h>妈妈再也不用担心孩子忘记头文件啦!原创 2022-03-19 10:56:44 · 2304 阅读 · 4 评论 -
c++ 并查集
什么是并查集并查集是类似于集合的一种关系主要的基本用法有两个:1、判断两个点是否属于同一个集合2、查询现有的集合个数算法思路用故事讲算法:江湖里来了九位英雄人物:张无忌、小昭、光明左使杨逍、白眉鹰王殷天正、金毛狮王谢逊、青翼蝠王韦一笑、灭绝师太、周芷若、成昆。首先呢,给他们个取个代号0:张无忌1:小昭2:光明左使杨逍3:白眉鹰王殷天正4:金毛狮王谢逊5:青翼蝠王韦一笑6:灭绝师太7:周芷若8:成昆他们初来驾到,来到这里时都互不认识,他们一个人就代表一个势力int f[9原创 2022-01-25 15:12:37 · 1062 阅读 · 0 评论 -
dev使用c++11教程
dev无法使用c++11新特新dev无法使用unordered_map,unordered_set,foreach循环原创 2022-01-23 16:50:52 · 4857 阅读 · 1 评论 -
一篇文章吃透背包问题!(细致引入+解题模板+例题分析+代码呈现)
背包问题背包问题解题模板典型题目1049. 最后一块石头的重量 II322. 零钱兑换416. 分割等和子集494. 目标和279. 完全平方数377. 组合总和 Ⅳ518. 零钱兑换 II1155. 掷骰子的N种方法背包问题背包问题:背包问题是动态规划非常重要的一类问题,它有很多变种,但题目千变万化都离不开我根据力扣上背包问题的题解总结的解题模板。负责任地说,吃透这一篇文章,力扣上所有背包问题拿过来就可以秒杀!背包定义:那么什么样的问题可以被称作为背包问题?换言之,我们拿到题目如何透过题目的不同转载 2021-08-27 23:19:31 · 2163 阅读 · 2 评论 -
c++算法笔记(更新中)
c++ 算法笔记算法排序算法排序算法基本分为八种冒泡排序插入排序堆排序选择排序快速排序归并排序基数排序希尔排序当然,并不要求完全掌握全部的排序方法。虽然如此,理解其中的实现原理是很有必要的。这为我们遇到相似问题是提供思路遇到排序问题时可以使用头文件algorthm中的sort()和stable_sort()函数来实现排序sort()的实现用的是快速排序,并不稳定。需要稳定排序时可以用stable_sort()来实现,实现是归并排序。两个排序的复杂度都是O(nlogn),但原创 2021-08-12 05:05:41 · 414 阅读 · 1 评论 -
完全平方数(妙解)
时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 131072K,其他语言262144K64bit IO Format: %lld题目描述多次查询[l,r]范围内的完全平方数个数定义整数x为完全平方数当且仅当可以找到整数y使得y*y=x输入描述:第一行一个数n表示查询次数之后n行每行两个数l,r输出描述:对于每个查询,输出一个数表示答案示例1输入51 31 42 44 41 1000000000输出121131622备注:n <= 1原创 2021-06-13 14:50:52 · 1128 阅读 · 0 评论 -
c++ for循环的新写法
for循环遍历一个数组、string类、vector类等老写法:#include<iostream>#include<string>#include<vector>using namespace std;int main(){ int a[10]={1,2,3,4,5,6,7,8,9}; string b("abcdefg"); vector<int> c(5); c[1]=1,c[2]=2,c[3]=3,c[4]=4; int i;原创 2021-06-09 00:43:13 · 2493 阅读 · 1 评论 -
c++函数模板
用法:template <class 类型参数1,class 类型参数2,...>//用class和typename都可以返回值类型 模板名(形参表){ 函数体}作用:解决同一函数因类型名不同须写多个相似函数的问题举例:首先我们按普通思路写一个Max()函数,要求返回两个数中的较大者,为了函数的通用性我们需要重载多个函数代码如下:#include<string>using namespace std;int Max(int a,int b){ retu原创 2021-06-08 23:59:03 · 115 阅读 · 1 评论 -
c++ string类所占字节数
string类仅有一个数据成员,char*指针,故string类的大小和指针相似,在64位的运行环境下占8个字节,在32位的运行环境下占4个字节代码:#include<iostream>#include<string>using namespace std;int main(){ string a="12345678910"; cout<<sizeof(string)<<endl; cout<<sizeof(a)<<e原创 2021-06-08 23:32:21 · 6065 阅读 · 6 评论 -
构造完全图(最小生成树,Kruskal算法)
时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32768K,其他语言65536K64bit IO Format: %lld题目描述对于完全图G,若有且仅有一棵最小生成树为T,则称完全图G是树T扩展出的。给你一棵树T,找出T能扩展出的边权和最小的完全图G。输入描述:第一行N表示树T的点数;接下来N-1行三个整数S i ,T i,D i;描述一条边(S i ,T i )权值为D i ; 保证输入数据构成一棵树。输出描述:输出仅一个数,表示最小的完全图GGG的边.原创 2021-06-04 21:45:49 · 1682 阅读 · 1 评论 -
新的开始(最小生成数,Dijkstra算法)
时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format:%lld题目描述发展采矿业当然首先得有矿井,小FF花了上次探险获得的千分之一的财富请人在岛上挖了n口矿井,但他似乎忘记考虑的矿井供电问题……为了保证电力的供应,小FF想到了两种办法: 在这一口矿井上建立一个发电站,费用为v(发电站的输出功率可以供给任意多个矿井)。将这口矿井与另外的已经有电力供应的矿井之间建立电网,费用为p。小FF希望身为「NewBe_One」.原创 2021-06-04 18:10:01 · 181 阅读 · 1 评论 -
北极通讯网络(最小生成数,Kruskal算法)
时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32768K,其他语言65536K64bit IO Format: %lld题目描述北极的某区域共有n座村庄,每座村庄的坐标用一对整数(x,y)表示。为了加强联系,决定在村庄之间建立通讯网络。通讯工具可以是无线电收发机,也可以是卫星设备。所有的村庄都可以拥有一部无线电收发机,且所有的无线电收发机型号相同。但卫星设备数量有限,只能给一部分村庄配备卫星设备。不同型号的无线电收发机有一个不同的参数d,两座村庄之间的距离如果不超过d就可以用该型原创 2021-06-04 00:10:50 · 243 阅读 · 4 评论 -
黑暗城堡(dijkstra算法)
时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32768K,其他语言65536K64bit IO Format: %lld题目描述你知道黑暗城堡有N个房间,M条可以制造的双向通道,以及每条通道的长度。城堡是树形的并且满足下面的条件:设D i为如果所有的通道都被修建,第i号房间与第1号房间的最短路径长度;而Si为实际修建的树形城堡中第i号房间与第1号房间的路径长度;要求对于所有整数i(1≤i≤N),有Si=Di成立。你想知道有多少种不同的城堡修建方案。当然,你只需要输出答案对原创 2021-06-03 01:04:29 · 980 阅读 · 9 评论 -
c++ 迭代器的用法(简单易懂)
迭代器用法:如map迭代器#include<iostream>#include<map>using namespace std;int main(){ map<int,int> a; a[1]=2; a[3]=4; a[5]=6; a[9]=10;//a[7]和a[9]是乱序的遍历时map会自动排序 a[7]=8; map<int,int>::iterator it;//使用迭代器原创 2021-05-18 13:30:09 · 740 阅读 · 2 评论 -
map iterator里的first和second
it->first代表下标;it->second 代表值;如:#include<iostream>#include<map>using namespace std;int main(){ map<int,int> a; a[1]=2; a[3]=4; a[5]=6; a[9]=10;//a[7]和a[9]是乱序的遍历时map会自动排序 a[7]=8; map<int,int>::原创 2021-05-18 13:28:43 · 778 阅读 · 2 评论 -
map 迭代器iterator的first,second到底是什么?
it->first代表下标;it->second 代表值;如:#include<iostream>#include<map>using namespace std;int main(){ map<int,int> a; a[1]=2; a[3]=4; a[5]=6; a[9]=10;//a[7]和a[9]是乱序的遍历时map会自动排序 a[7]=8; map<int,int>::原创 2021-05-18 13:18:54 · 3862 阅读 · 4 评论 -
c++ iterator it
迭代器用法:如map迭代器#include<iostream>#include<map>using namespace std;int main(){ map<int,int> a; a[1]=2; a[3]=4; a[5]=6; a[9]=10;//a[7]和a[9]是乱序的遍历时map会自动排序 a[7]=8; map<int,int>::iterator it;//使用迭代器原创 2021-05-18 13:15:31 · 792 阅读 · 2 评论