C++
文章平均质量分 65
ScutEthan
这个作者很懒,什么都没留下…
展开
-
C++中new的用法
文章转载自http://blog.csdn.net/waken_ma/article/details/4007914new的过程当我们使用关键字new在堆上动态创建一个对象时,它实际上做了三件事:获得一块内存空间、调用构造函数、返回正确的指针。当然,如果我们创建的是简单类型的变量,那么第二步会被省略。假如我们定义了如下一个类A:class A{ int i;pub转载 2016-12-25 20:43:47 · 960 阅读 · 0 评论 -
例题:枚举排列
枚举排列常见的方法有两种:一种是递归枚举,而是用STL中的next_permutation【1】生成可重集的排列#include#include#includeint p[20];int cmp(const void *a, const void *b){ return *(int *)a - *(int *)b;}void print_permutation(int原创 2016-10-06 16:42:05 · 517 阅读 · 0 评论 -
C++中一个由编译器决定结果的程序
【代码】#include using namespace std;int get(int i){ cout << i << endl; return i + 1;}int Cal(int a, int b) { return a + b;}int main() { cout << Cal(get(0), get(10)) << endl; return 0;}原创 2016-10-06 09:53:02 · 288 阅读 · 0 评论 -
例题:最大乘积
【题目】输入n个元素组成的序列S,你需要找出一个乘积最大的连续子序列。如果这个最大的乘积不是正数,应输出0(表示无解)。1样例输入:32 4 -352 5 -1 2 -1样例输出:820【分析】连续子序列有两个要素:起点和终点,因此只需枚举起点和终点即可。由于每个元素的绝对值不超过10且不超过18个元素,最大可能的乘积不会超过10^18,可以用long原创 2016-10-05 19:52:07 · 732 阅读 · 0 评论 -
例题:除法(UVa 725)
【题目】输入正整数n,按从小到大的顺序输出所有形如abcde/fghij = n的表达式,其中a~j恰好为数字0~9的一个排列,n为2~79;Sample Input61620Sample OutputThere are no solutions for 61.79546 / 01283 = 6294736 / 01528 = 62【分析】使用暴力枚举的方法原创 2016-10-05 19:28:37 · 774 阅读 · 0 评论 -
c++中必须在类初始化列表中初始化的几种情况
文章转载自http://www.cnblogs.com/kaituorensheng/p/3477630.html以下几种情况必须在构造函数的初始化列表中:类的const常量类的引用类型成员没有默认构造函数的类类型成员没有默认构造函数的类类型成员详细情况如下: 1. 类成员为const类型2.类成员为引用类型#include <iostream>using namespace std;转载 2016-10-17 20:56:49 · 788 阅读 · 0 评论 -
C++中的const成员函数
文章转载自http://www.cnblogs.com/kaituorensheng/p/3244910.html1.const成员变量#include using namespace std;class A{ public: A(int size) : SIZE(size) {}; private: const int SIZE转载 2016-10-17 20:41:17 · 352 阅读 · 0 评论 -
百度面试题:宏的概念,与函数的区别,优缺点的比较。
文章转载自:http://www.xuebuyuan.com/1669200.html宏宏概念:C++ 宏定义将一个标识符定义为一个字符串,源程序中的该标识符均以指定的字符串来代替。宏书写形式:#define () 宏与函数的区别:时间上考虑:1.宏只占编译时间,函数调用则占用运行时间(分配单元,保存现场,值传递,返回转载 2016-10-17 18:04:22 · 509 阅读 · 0 评论 -
C++11中的lambda表达式
参考http://www.jb51.net/article/56147.htmhttp://blog.jobbole.com/104548/lambda就是一个匿名的可调用代码块。在C++11新标准中,lambda具有如下格式:[capture list] (parameter list) -> return type { function body }可以看到,他有四转载 2016-10-01 10:28:30 · 233 阅读 · 0 评论 -
C++类的静态成员变量为什么一定要初始化
文章转载自https://my.oschina.net/u/1537391/blog/219432我们知道C++类的静态成员变量是需要初始化的,但为什么要初始化呢。其实这句话“静态成员变量是需要初始化的”是有一定问题的,应该说“静态成员变量需要定义”才是准确的,而不是初始化。两者的区别在于:初始化是赋一个初始值,而定义是分配内存。静态成员变量在类中仅仅是声明,没有定义,所以要在类的外面定义转载 2016-10-07 20:35:42 · 5737 阅读 · 0 评论 -
c++类中的静态成员函数总结
参考http://www.cnblogs.com/carbs/archive/2012/04/04/2431992.html1.c++中可以对类中私有成员中的静态变量初始化吗?一般情况下对类中私有部分的访问可以是公共部分的成员函数,也可以是友元函数。那可以直接对私有部分的静态成员进行初始化吗。(1)static成员的所有者是类本身和对象,但是所有对象拥有一样的静态成员。从而在定义对象时转载 2016-09-30 16:57:55 · 794 阅读 · 0 评论 -
n皇后问题的解法
一、 求解N皇后问题是算法中回溯法应用的一个经典案例回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。下面是算法的高级伪码描述,这里用一个N*N的矩阵来存储棋盘: 1) 算法开始, 清空棋盘,当前行设为第一行,当前列设为第一列 2) 在当前行,当前列的位置上判断转载 2016-10-08 09:23:31 · 1186 阅读 · 0 评论 -
关于二分查找的写法
参考文章:https://www.zhihu.com/question/36132386https://www.oschina.net/code/snippet_126720_6472http://www.cnblogs.com/cchun/archive/2012/07/24/2605991.html方法1:对于不下降序列a,n为序列a元素的个数,key为关键字:转载 2016-11-23 17:09:30 · 1051 阅读 · 0 评论 -
外排序的C++实现(归并时利用败者树)
参考博客:http://blog.csdn.net/v_JULY_v/article/details/6451990http://www.cnblogs.com/harryshayne/archive/2011/07/02/2096196.html1、问题描述:输入:一个最多含有n个不重复的正整数(也就是说可能含有少于n个不重复正整数)的文件,其中每个数都小于等于n,且n=10^7转载 2016-11-02 20:52:49 · 3588 阅读 · 0 评论 -
c++堆排序实现
#include<iostream>using namespace std;int arrs[] = { 23, 65, 12, 3, 8, 76, 345, 90, 21, 75, 34, 61 };int arrLen = sizeof(arrs) / sizeof(arrs[0]);//维护堆的性质,保证除了根节点以外的所有节点i满足A[PARENT(i)]>=A[i]void adju原创 2016-11-01 20:29:05 · 360 阅读 · 0 评论 -
c++中的4种显式类型的转换
文章转载自http://m.jb51.net/article/48615.htm1.概述tatic_cast:用于“良性”和“适度良性”的转换,包括不用强制转换const_cast:用于“const”和/或“volatile”进行转换reinterpret_cast:转换为完全不同的意思。为了安全的使用它,关键必须转换回原来的类型。转换成的类型一般只能用于位操作,否转载 2016-11-16 16:54:35 · 1953 阅读 · 0 评论 -
C++的STL中向量(vector)的使用说明
文章转载自http://blog.csdn.net/chenyufeng1991/article/details/52269300学过C++的人肯定会很熟悉STL标准模板库,STL其实就是封装了一系列的接口,供我们调用。很多函数或者算法的实现不需要我们从头开始写,大大提高我们的编程效率。这篇博客在简单介绍STL的情况下,会详细的来介绍vector的使用。STL共有六大组件:转载 2016-09-21 08:25:30 · 3553 阅读 · 0 评论 -
C++的STL中accumulate的用法
accumulate定义在#include中,作用有两个,一个是累加求和,另一个是自定义类型数据的处理1.累加求和int sum = accumulate(vec.begin() , vec.end() , 42);accumulate带有三个形参:头两个形参指定要累加的元素范围,第三个形参则是累加的初值。accumulate函数将它的一个内部变量设置为指定的初始值,然后在此初原创 2016-10-08 15:07:02 · 72886 阅读 · 9 评论 -
C++中的bitset类型
文章转载自http://www.cnblogs.com/BaiYiShaoNian/p/4591167.htmlc++标准库提供bitset类型,头文件#include和vector对象不一样的是bitset类型对象的区别仅在其长度而不在其类型。在定义bitset的时候,要明确bitset包含了多少位,须在尖括号内给出它的长度值。长度值必须定义为整形字面值常量或是已用常量值初始化的整型转载 2016-10-08 14:17:02 · 875 阅读 · 0 评论 -
c++中的std::pair与std::make_pair
文章转载自:http://www.cnblogs.com/Nimeux/archive/2010/10/05/1844191.htmlstd::pair主要的作用是将两个数据组合成一个数据,两个数据可以是同一类型或者不同类型。例如std::pair 或者 std::pair等。pair实质上是一个结构体,其主要的两个成员变量是first和second,这两个变量可以直接使用。初始化一个pair转载 2016-10-08 14:07:27 · 27225 阅读 · 0 评论 -
非静态成员引用必须与静态成员相对
文章转载自:http://blog.csdn.net/shenqi67/article/details/7533094Instance成员和static成员(p318)实例变量/函数(instance variable):和一个类定义的实例(对象)密切相关。对同一个类的不同对象,其实例变量占有不同的存储空间。Static变量(static variable or cla转载 2016-09-30 17:20:55 · 6815 阅读 · 0 评论 -
C++析构函数为什么要定义成虚函数
文章转载自http://blog.sina.com.cn/s/blog_7c773cc50100y9hz.html1.为什么基类的析构函数是虚函数? 在实现多态时,当用基类操作派生类,在析构时防止只析构基类而不析构派生类的状况发生。a.第一段代码#includeusing namespace std;class ClxBase{public: ClxBase()转载 2016-09-30 15:47:37 · 385 阅读 · 0 评论 -
求一个集合所有可能的子集
【1】增量构造法一次选出一个元素放到集合中#include#includeusing namespace std;const int MAX = 100;int layer = -1; //递归层数int count1 = 0;void print_subset(int n, int *A, vector &vi, int cur){ cout << "layer:" <<原创 2016-10-08 20:02:56 · 1112 阅读 · 0 评论 -
C++的STL中的映射(map)使用说明
文章转载自:http://www.cnblogs.com/yaoyueduzhen/p/4537123.htmlmap是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力。1.map的构造函数map共提供了6个构造函数,这块涉及到内存分配器这些东西,略过不表,在下面我们将接触到一些map的构造方法,这里要说下的就转载 2016-09-18 18:23:20 · 550 阅读 · 0 评论 -
STL中的顺序性容器、关联性容器与容器适配器
文章转载自:http://www.cnblogs.com/dyllove98/p/3214898.htmlSTL 对定义的通用容器分三类:顺序性容器、关联式容器和容器适配器。顺序性容器:是一种各元素之间有顺序关系的线性表,是一种线性结构的可序群集。顺序性容器中的每个元素均有固定的位置,除非用删除或插入的操作改变这个位置。这个位置和元素本身无关,而和操作的时间和地点有关,顺序性容器不会根据元素的特点排转载 2016-09-18 17:59:42 · 681 阅读 · 0 评论 -
C++的STL中集合(set)的使用说明
文章转载自:http://www.cnblogs.com/yaoyueduzhen/p/4536929.htmlset,顾名思义,就是数学上的集合——每个元素最多只出现一次,并且set中的元素已经从小到大排好序。头文件:#include常用操作:begin() 返回set容器的第一个元素的地址end() 返回set容器的最后一个元素地址clear() 删除s转载 2016-09-18 17:34:15 · 31282 阅读 · 2 评论 -
C++的STL中队列(queue)的使用说明
文章转载自http://www.cnblogs.com/yaoyueduzhen/p/4456430.html基本操作:push(x) 将x压入队列的末端pop() 弹出队列的第一个元素(队顶元素),注意此函数并不返回任何值front() 返回第一个元素(队顶元素)back() 返回最后被压入的元素(队尾元素)empty() 当队列为空时,返回truesize() 返回队列的长度使用方法:头文件:#转载 2016-09-18 17:15:15 · 30803 阅读 · 0 评论 -
例题:大理石在哪儿(UVa 10474)
大理石在哪儿现有N个大理石,每个大理石上写了一个非负整数、首先把各数从小到大排序然后回答Q个问题。每个问题问是否有一个大理石写着某个整数x,如果是,还要回答哪个大理石上写着x。排序后的大理石从左到右编号为1~N。(在样例中,为了节约篇幅,所有大理石的数合并到一行,所有问题也合并到一行。)样例输入:4 12 3 5 155 21 3 3 3 12 3原创 2016-09-18 09:11:31 · 1381 阅读 · 0 评论 -
C++中模板的使用示例
使用sum函数给各个类型的数组求和#include<iostream>using namespace std;template<typename T> //将Point设为模板,这样Point类中的就可以是int型或者double型class Point{public: T x, y; Point(T x = 0, T y = 0) :x(x), y(y){}};templ原创 2016-09-16 16:33:16 · 629 阅读 · 0 评论 -
C++中int、string、const char*、CString之间的相互转换
1.int与string的相互转化使用stringstream即可 stringstream可以吞下不同的类型,根据b的类型,然后吐出不同的类型。//#include<sstream>int a=80;stringstream ss;ss<<a;string str = ss.str();cout<<str<<endl; //80int b;ss >> b;cout << b << e原创 2016-09-12 15:43:55 · 2765 阅读 · 0 评论 -
scanf()函数中%[]格式控制符用法
文章转载自http://blog.sina.com.cn/s/blog_6757155901013068.html此格式控制符的基本格式为:%[scanfset]scanfset 有两种形式:一种是以非 “^” 字符开头的 scanset , 表示在读入字符串时将匹配所有在 scanfset 中出现的字符,遇到非scanfset 中的字符时输入就结束;另外一种形式是以 “^转载 2016-09-21 13:42:53 · 3006 阅读 · 0 评论 -
C语言中scanf函数与空格回车
文章转载自:http://blog.csdn.net/xia7139/article/details/145224931、scanf的返回值scanf通常返回的是成功赋值(从标准输入设备赋值到参数列表所指定的内存区域)的数据项数,如果出错或是遇到end of file(注意,如果想从键盘输入EOF,在windows的DOS窗口用Ctrl+Z 或F6;在UNIX系统上,用CTRL转载 2016-09-21 14:08:52 · 37017 阅读 · 0 评论 -
动态链接库(.dll、.lib)与静态链接库(.lib)的创建与使用
文章转载自:http://blog.csdn.net/xiaoding133/article/details/8973436以下以vs2013开发环境做出演示:一、动态链接库的创建和引用首先在vs2013中创建一个空的DLL1项目,添加DLL1.h与DLL.cpp 头文件DLL1.h内容如下:#ifndef DLL1_H#define DLL1_H#ifdef BUILD_DLL#defin转载 2016-09-08 15:56:13 · 770 阅读 · 0 评论 -
Bellman-Ford(贝尔曼-福特)算法求单源最短路径
参考博客http://www.cnblogs.com/tanky_woo/archive/2011/01/17/1937728.html/** About: Bellman-Ford算法* Author: Tanky Woo* Blog: www.WuTianqi.com*/ #include using namespace std;const int maxnu转载 2016-11-06 22:06:31 · 1016 阅读 · 0 评论 -
Floyd-Warshall(弗洛伊德)算法求所有节点对的最短路径问题
参考博客http://www.cnblogs.com/skywang12345/p/3711526.html1.基本定义class MatrixUDG { #define MAX 100 #define INF (~(0x1<<31)) // 无穷大(即0X7FFFFFFF) private: char mVexs[MAX]转载 2016-11-06 21:11:00 · 1529 阅读 · 0 评论 -
Dijkstra(迪杰斯特)算法求单源最短路径
参考博客http://www.cnblogs.com/skywang12345/p/3711514.htmlhttp://blog.csdn.net/linux_ever/article/details/51314082http://www.cnblogs.com/biyeymyhjob/archive/2012/07/31/2615833.html以邻接矩阵创建图,实现算法转载 2016-11-06 21:06:12 · 3142 阅读 · 0 评论 -
有向无环图的拓扑排序
参考博客http://blog.csdn.net/lrgdongnan/article/details/51679781http://www.cnblogs.com/en-heng/p/5085690.html有向无环图(Directed Acyclic Graph, DAG)是有向图的一种,字面意思的理解就是图中没有环。常常被用来表示事件之间的驱动依赖关系,管理任务之间的调度转载 2016-11-05 21:40:40 · 2955 阅读 · 0 评论 -
C++外部排序(选择置换+败者树)
参考博客:http://www.cnblogs.com/benjamin-t/p/3325401.html单个顺串的生成采用选择置换算法。多路归并采用败者树。#include#include#include#include#includeusing namespace std;#define MAX_INT 0x7fffffff#define MIN_INT -1c转载 2016-11-03 20:05:37 · 2640 阅读 · 1 评论 -
例题:四分树(UVa 297)
【题目】可以用一个四分图表示一32*32的黑白图像 ,法是用根节点来表示整个图像,然后再进行等分,按照从右上角的图像开始逆时针的顺序编号,依次有四个节点,如果某子节点对应的区域是全黑或者全白,则直接用黑或者白节点来代替,如果对应的区域既有白区域,也有黑区域,则用灰节点来表示,并且为这个区域递归建树。给出两棵四分树的先序遍历,求两者合并之后(黑色部分合并),黑色像素的个数,其中p表示中间节点,f表示原创 2016-09-26 20:02:09 · 731 阅读 · 0 评论 -
C++ 中字符串的使用
文章转载自http://blog.csdn.net/chenyufeng1991/article/details/52266035首先要引入C++中的字符串头文件:#include 请注意,这里的头文件是没有.h的,否则就成了C语言中的头文件了。(1)创建字符串创建字符串有好几种构造方式,最典型的方式就是使用复制构造函数,string str("chen转载 2016-09-24 22:52:03 · 527 阅读 · 0 评论