
c++
c++
成长的小牛233
不辜负每一份热爱
展开
-
最全ACM常用STL
STL 中专门用于排列的函数(可以处理存在重复数据集的排列问题)头文件:#include using namespace std;调用: next_permutation(start, end);注意:函数要求输入的是一个升序排列的序列的头指针和尾指针.用法:// 数组int a[N];sort(a, a+N);next_permutation(a, a+N);原创 2016-12-07 20:38:32 · 6302 阅读 · 0 评论 -
优先队列c++ STL用法
优先队列(priority queue)普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (first in, largest out)的行为特征。优先队列是队列的一种,不过它可以按照自定义的一种方式(数据的优先级)来对队列中的数据进行动态的排序每次的原创 2016-12-04 02:23:17 · 567 阅读 · 0 评论 -
sdut Message Flood
D - Message FloodTime Limit: 1500 MS Memory Limit: 65536 KB 64bit IO Format: %lld & %lluDescriptionWell, how do you feel about mobile phone? Your answer would probably be原创 2016-12-02 02:11:27 · 305 阅读 · 0 评论 -
链表c++代码的实现
//说明:各位测试数据的时候,请严格按照主函数来测试数据。因为这个链表是假设所有输入数据正确的情况。。。假如随便乱输入的话。。我没写边界检查。//本次写法是比较简洁的。方便大家学习。 #include "iostream"using namespace std;typedef struct Node{char ch;struct Node原创 2016-04-10 14:54:18 · 525 阅读 · 0 评论 -
在C++中用虚函数的作用是什么?为什么要用到虚函数
简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异而采用不同的策略。原创 2017-01-10 12:59:10 · 3351 阅读 · 0 评论 -
c++静态成员函数为什么不能为虚函数?
知乎用户 three passions govern my life2 人赞同可以把静态成员函数看作是“命名空间受限的普通函数”,所以它不能有运行时多态发布于 2015-06-23 添加评论 感谢 分享 收藏 • 没有帮助 • 举报 • 作者保留权利Elvis Wang C++程序员转型Ja原创 2017-01-10 12:55:16 · 7545 阅读 · 2 评论 -
C++之带有默认参数值的构造函数
在一个类中 ,如果程序员没有写,任何一个构造函数,则编译器将为该类提供一个默认的构造函数,如果程序员对类的构造函数进行了重载,则编译器将不提供默构造函数,这里需要手动书写一个无参的构造函数,无参的构造函数,也就是默认构造函数,默认构造函数分为两种:1、不含有参数的默认构造函数2、带有默认参数值的构造函数在这里主要说的是带有默认参数值的构造函数的使用及注意事项:定义方法示例:转载 2016-12-29 20:49:22 · 8161 阅读 · 0 评论 -
邻接表的构建、DFS、BFS搜索
接着上次的文章“图的构建(邻接链表法)”,邻接链表法构建图相对来说比较简单,并且遍历起来也相对简单,但是要是动态添加图的节点和图的边,则是实在不方便,不过现在不管那么多,今天的主题是遍历。 - 有另外一种图的构建方法,叫做十字链表法,插入删除比较方便,但是相对来说比较复杂,改天闲着木事的再搞。(其实主要原因是因为三四年前写的代码,现在翻出来了,现成的,尼玛现在让我从头写那么复杂的数据结构,死的转载 2016-12-29 18:14:01 · 613 阅读 · 0 评论 -
排序算法总结与C代码
最近参加笔试,感觉排序算法需要好好的整理一下,感觉部分排序算法理解得不是很清楚;通过这段时间的整理与总结来对排序算法的一个复习吧。 主要参考了《大话数据结构》:1. 冒泡排序的基本思想:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。[cpp] view plain copy#define length 1转载 2016-05-03 20:13:33 · 1395 阅读 · 0 评论 -
C语言fgets函数了解
原型是:char *fgets(char *s, int n, FILE *stream);从文件指针stream中读取n-1个字符,存到以s为起始地址的空间里,直到读完一行,如果成功则返回s的指针,否则返回NULL。例如:一个文件是hello,world,用fgets(str1,4,file1); 执行后str1="hel",读取了4-1=3个字符.转载 2016-11-23 15:26:39 · 427 阅读 · 0 评论 -
C语言fscanf函数了解
fscanf函数从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。这与fgets有区别,fgets遇到空格不结束。原型:int fscanf(FILE *stream, char *format,[argument...]);返回值:返回实际被转换并赋值的输入项的数目。 %d:读入一个十进制整数。 %i :读入十进制,八进制,十六进制转载 2016-11-23 15:26:08 · 824 阅读 · 0 评论 -
C语言fwrite函数了解
fwrite()函数----write data to a stream原型:size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);注意:这个函数以二进制形式对文件进行操作,不局限于文本文件demo:[cpp] view plain c转载 2016-11-23 15:25:10 · 569 阅读 · 0 评论 -
C语言之strstr函数
FROM MSDN && 百科】原型:char *strstr(const char *str1, const char *str2);#include找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。返回该位置的指针,如找不到,返回空指针。Returns a pointer to the first occurrence转载 2016-11-23 15:24:38 · 366 阅读 · 0 评论 -
C语言fread函数了解
fread()函数---- Reads data from a stream.#includesize_t fread( void *buffer, size_t size, size_t count,FILE *stream );从一个文件流中读数据,读取count个元素,每个元素size字节.如果调用成功返回count.如果调用成功则实际读取size*count字节转载 2016-11-23 15:23:43 · 630 阅读 · 0 评论 -
C/C++中字符串与数字相互转换
数字转字符串: 用C++的streanstream: #include #Include string num2str(double i) { stringstream ss; ss return ss.str(); }原创 2016-11-23 15:22:49 · 328 阅读 · 0 评论 -
C++:构造函数和析构函数能否为虚函数
C++:构造函数和析构函数能否为虚函数?简单回答是:构造函数不能为虚函数,而析构函数可以且常常是虚函数。(1) 构造函数不能为虚函数让我们来看看大牛C++之父 Bjarne Stroustrup 在《The C++ Programming Language》里是怎么说的:To construct an object, a constructor needs the原创 2017-01-10 13:00:59 · 388 阅读 · 0 评论 -
定义一个结构体指针需要分配存储空间?
前言问题的来源于在学数据结构的时候,C++的语法和C语言的语法竟然不一样。1.首先函数的参数有两种传递方式,一个是值传递,一个是地址传递。当指针作为参数传递的时候,即为地址传递,但C++写的时候需要加&引用符号,而C语言却不用。2.本文谈的是这个问题,即为当声明一个结构体指针时,为什么还有new(C++)或者malloc()这种语句,一直搞不清楚,后台问bb,然后百度了一下,才明白转载 2017-01-12 13:43:06 · 20758 阅读 · 13 评论 -
C/C++字符串输入方法比较(带回车不带回车输入)
1.scanfcharstr[15];scanf("%s",str);abc 123 1) 不读入空格和回车,从空格处结束2) 输入字符串长度超过字符数组元素个数不报错3) 当输入项为字符指针时,指针必须已指向确定的有足够空间的连续存储单元 4) 当为数组元素地址时,从此元素地址开始存放prin转载 2017-11-05 10:56:26 · 6313 阅读 · 0 评论 -
C语言有参函数调用时参数值传递问题
http://blog.youkuaiyun.com/hehuimin6/article/details/38800459转载 2018-02-25 23:50:10 · 1352 阅读 · 0 评论 -
题目1335:闯迷宫( BFS在求解最短路径或者最短步数上有很多的应用)
题目描述:sun所在学校每年都要举行电脑节,今年电脑节有一个新的趣味比赛项目叫做闯迷宫。sun的室友在帮电脑节设计迷宫,所以室友就请sun帮忙计算下走出迷宫的最少步数。知道了最少步数就可以辅助控制比赛难度以及去掉一些没有路径到达终点的map。比赛规则是:从原点(0,0)开始走到终点(n-1,n-1),只能上下左右4个方向走,只能在给定的矩阵里走。输入:输入有原创 2016-04-12 18:28:12 · 2641 阅读 · 0 评论 -
队列c++代码
#include "iostream"#include "algorithm"#include "queue"using namespace std; void Init(queue int> q){while(!q.empty()){q.pop();}} int main(){queue int> q;int n,qu;whil原创 2016-04-10 14:55:25 · 704 阅读 · 0 评论 -
c++堆栈中 top() pop()的具体作用是什么
top()是取栈顶元素pop()是弹出栈顶元素stack a;a.push(1); // 1a.push(2); // 1 2a.push(3); // 1 2 3int c = a.top(); // c = 3a.pop(); // 1 2a.push(4); // 1 2 4c = a.top(); // c = 4转载 2016-04-12 20:17:04 · 11268 阅读 · 0 评论 -
DFS与BFS
写在最前的三点:1、所谓图的遍历就是按照某种次序访问图的每一顶点一次仅且一次。2、实现bfs和dfs都需要解决的一个问题就是如何存储图。一般有两种方法:邻接矩阵和邻接表。这里为简单起见,均采用邻接矩阵存储,说白了也就是二维数组。3、本文章的小测试部分的测试实例是下图:一、深度优先搜索遍历1、从顶点v出发深度遍历图G的算法① 访问v② 依次从顶点v未被访问的邻接点出发深度遍历。2、一点心得:dfs算...转载 2016-04-12 21:02:19 · 21055 阅读 · 1 评论 -
C++ Lists(链表)
Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢.assign()给list赋值back()返回最后一个元素begin()返回指向第一个元素的迭代器clear()删除所有元素empty()如果list是空的则返回trueend()原创 2016-04-16 16:03:48 · 468 阅读 · 0 评论 -
C++ Queues(队列)
C++队列是一种容器适配器,它给予程序员一种先进先出(FIFO)的数据结构。 back()返回最后一个元素empty()如果队列空则返回真front()返回第一个元素pop()删除第一个元素push()在末尾加入一个元素size()返回队列中元素的个数原创 2016-04-16 16:05:33 · 344 阅读 · 0 评论 -
栈c++代码实现
//实在不想写数组法了,写个常用的STL的吧#include "iostream"#include "algorithm"#include "stack"using namespace std; void Init(stack int> s){while(!s.empty()){s.pop();}} int main(){stack原创 2016-04-10 14:56:07 · 713 阅读 · 0 评论 -
C++ Stacks(堆栈)
C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构。操作比较和分配堆栈empty()堆栈为空则返回真pop()移除栈顶元素push()在栈顶增加元素size()返回栈中元素数目top()返回栈顶元素原创 2016-04-16 15:44:07 · 439 阅读 · 0 评论 -
判断子字符串是否出现在主字符串内
//strstr(string,search)#include #include // 从str1中查找str2的个数,并返回int findChildCnt(char* str1, char* str2){ int len = strlen(str2); int cnt = 0; while (str1 = strstr(str1, st原创 2016-04-16 15:24:27 · 598 阅读 · 0 评论 -
通讯录
#include#includeint main(){ int n; printf("请输入通讯录中的人的总数。"); scanf("%d",&n); getchar(); printf("请输入通讯录中人的姓名和其对应的编号:\n"); int i; char name[40][40]; int tell原创 2016-04-16 15:19:17 · 423 阅读 · 0 评论 -
strchr与strstr函数
在C语言中 strchr 和 strstr函数都被包含在头文件中,也就是要调用它们时要在程序前面包含头文件,也就是写这个语句:#includestrchr函数原型:char * strchr(char * str, int ch); 功能就是找出在字符串str中第一次出项字符ch的位置,找到就返回该字符位置的指针(也就是返回该字符在字符串中的地址的位置),找不到就返回空指针(就是 null)。原创 2016-11-23 14:59:07 · 584 阅读 · 0 评论 -
strchr函数的用法
【FROM MSDN && 百科】原型: char *strchr(const char *s,char c);#include查找字符串s中首次出现字符c的位置,返回首次出现c的位置的指针,如果s中不存在c则返回NULL。//#define FIRST_DEMO#define SECOND_DEMO#ifdef FIRST_DEMO#incl转载 2016-11-23 14:56:32 · 20331 阅读 · 3 评论 -
国庆训练赛
DescriptionConsider the following programming language. This language contains only two types of statements: simple statements and compound statements. The simple statement is in the form “write (原创 2016-10-05 11:20:22 · 448 阅读 · 0 评论 -
C++注释符问题
#includeusing namespace std;int main(){ std::cout std::cout std::cout std::cout return 0;}运行出错,第二行无法识别[Warning] missing terminating " character [enabled by default]原创 2016-05-08 14:30:39 · 1732 阅读 · 0 评论 -
还是畅通工程(思想+代码)
Description某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。 Input测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( < 100 );原创 2016-05-08 11:06:52 · 1098 阅读 · 0 评论 -
最小生成树(普利姆算法、克鲁斯卡尔算法)
给定一个带权的无向连通图,如何选取一棵生成树,使树上所有边上权的总和为最小,这叫最小生成树.求最小生成树的算法(1) 克鲁斯卡尔算法图的存贮结构采用边集数组,且权值相等的边在数组中排列次序可以是任意的.该方法对于边相对比较多的不是很实用,浪费时间.(2) 普里姆算法图的存贮结构采用邻接矩阵.此方法是按各个顶点连通的步骤进行,需要用一个顶点集合,开始为空集,以后将以连通的顶点转载 2016-05-06 20:06:31 · 642 阅读 · 0 评论 -
线段树
1.概述 线段树,也叫区间树,是一个完全二叉树,它在各个节点保存一条线段(即“子数组”),因而常用于解决数列维护问题,它基本能保证每个操作的复杂度为O(lgN)。2.线段树基本操作 线段树的基本操作主要包括构造线段树,区间查询和区间修改.3.线段树的相关操作代码(1) 线段树构造首先介绍构造线段树的方法:让根节点表转载 2016-04-30 13:37:57 · 298 阅读 · 0 评论 -
【转】C语言的位运算的优势
位运算加速技巧1. 如果乘上一个2的倍数数值,可以改用左移运算(Left Shift) 加速 300%x = x * 2;x = x * 64;//改为:x = x << 1; // 2 = 21x = x << 6; // 64 = 262. 如果除上一个 2 的倍数数值,可以改用右移运算加速 350%x = x / 2;x = x / 64;//改为:x = x >...转载 2016-04-30 13:07:56 · 585 阅读 · 0 评论 -
不容易系列之一
不容易系列之一Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 18519 Accepted Submission(s): 7722Problem Description大家常常感慨,要做好一件事情真的不容易,确原创 2016-04-17 19:44:43 · 324 阅读 · 0 评论 -
二分查找
//用来查找元素,例:输入1 2 3 4查找3出现的位置,则返回下标2#includeint a[100];bool find(int key,int st,int end){int i=0;while(st{int mid = (st+end)/2;if(a[mid]==key){printf("%d",mid);break; }els原创 2016-04-16 15:18:18 · 327 阅读 · 0 评论 -
二分法
//计算n的k次方一种更节省时间的算法#includeint power(int n,int k){int x;if(k==1)return n;x=power(n,k/2);if(k%2==0)return x*x;elsereturn x*x*n;}int main(){int s,n,k;while(~scanf("%原创 2016-04-16 15:17:51 · 457 阅读 · 0 评论