C++
文章平均质量分 79
攻城狮凌风
专业吹水,从不装B
展开
-
C/C++测量时间的几种方式
1.5种方式 共有五种计算时间的方式分别如下: //需要包含 “” LARGE_INTEGER a, a_, nFrequency; double timeAccuracy = 1000; QueryPerformanceFrequency(&nFrequency); QueryPerformanceCounter(&a); Sleep(period);原创 2016-11-29 09:59:41 · 3190 阅读 · 0 评论 -
C++知识点总结(5)
1.为何静态成员函数不能调用非静态成员函数 静态成员函数可以不需要类的实例就直接使用,非静态的成员函数很可能用到一些成员变量,而成员变量的创建和初始化是在创建了类的实例时在构造函数调用的时候才进行的。 如果允许静态成员函数调用非静态的成员函数,那么就很有可能使用到未创建也未初始化的成员变量,这是完全不符合逻辑的。所以不能这么调用。 可以间接调用。即给静态原创 2015-07-20 10:48:07 · 501 阅读 · 0 评论 -
C++之queue模板类
1.常用成员函数 ①size() 返回队列中元素的个数 ②empty() 如果队列空则返回真 ③back() 返回最后一个元素引用即队尾。 ④front() 返回第一个元素引用即队首。 ⑤pop() 删除第一个元素,即队首元素。不返回 ⑥push() 在末尾加入一个元素,即放置在队尾 。不返回2.结构体原创 2014-11-10 15:12:21 · 4178 阅读 · 0 评论 -
C++之priority_queue
1.优先队列priority_queue 优先先队列是队列的一种,不过它可以按照自定义的一种方式(数据的优先级)来对队列中的数据进行动态的排序。每次的push和pop操作,队列都会动态的调整,以达到我们预期的方式来存储。常用的操作就是对数据排序,优先队列默认的是数据大的优先级高(即大根堆),即无论按照什么顺序push一堆数,top()总是能够弹出最大元素。原创 2015-07-19 15:42:34 · 650 阅读 · 0 评论 -
C++中的类型转换
C++类型转换分为:隐式类型转换和显式类型转换1.隐式转换 1) 算术转换(Arithmetic conversion)。在混合类型的算术表达式中, 最宽的数据类型成为目标转换类型。int ival = 3;double dval = 3.14159;ival + dval;//ival被提升为double类型 2)赋值转原创 2015-07-17 15:48:36 · 805 阅读 · 0 评论 -
数据结构相关概念
1.算法设计的目标: 可行性,可读性,健壮性,高效率,低存储。算法的一般特点:有穷性,确定性(无二义),可行性(由基本运算的有限次实现)。 2.数据的物理结构:顺序存储物理连续,存储密度高,可以随机访问数据。但是不利于数据插入删除。链式存储存储密度低,但是便于数据操作。另外还有散列,索引 3.实参初始化从左到右,因此默认形参值必须从右到左定义 4.对原创 2015-05-09 21:31:35 · 575 阅读 · 0 评论 -
scanf
1.原型 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。返回成功赋值的变量个数。 其调用格式为: s原创 2015-08-07 16:53:36 · 861 阅读 · 0 评论 -
memset,memcpy,strcpy的使用与区别
1.memset 原型: extern void *memset(void *buffer, int c, int count); 功能: 把buffer所指内存区域的前count个字节设置成字符 c。注意,memset始终按字节赋值, 说明: 返回指向buffer的指针。用来对一段内存空间全部设置为某个字符, memset可原创 2015-06-24 15:00:39 · 630 阅读 · 0 评论 -
new与delete,malloc与free
1.new_delete与malloc_free ❶malloc/free: malloc原型: void *malloc(long NumBytes) 该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。申请了内存空间后,必须检查是否分配成功。 fre原创 2015-06-08 15:49:26 · 712 阅读 · 1 评论 -
常量指针、指针常量、指向常量的指针常量
1.常量指针 全称:指向一个常量的指针,核心为指针。即一旦指向一个地址,该地址的值不能通过该指针来修改;可以更改该指针的值(更改指针指向的地址)。 定义: const 在“*”左侧。const int *p int const *p 使用:1.int a = 5;const int b = 8;const int *c = &a; //合原创 2014-12-26 09:56:15 · 990 阅读 · 0 评论 -
C++的继承与接口
1.继承方式 三种继承方式,public,private,protected。注意,继承方式是相对于某一层类的方法而言,并不是相对于子类的对象而言。对于外部世界()对象来说,protected和private相似。对于派生类来说,protected和public相似。 public继承。派生类中,父类public和protected的成员可以直接访问,仍旧保持pub原创 2015-06-05 20:42:58 · 831 阅读 · 0 评论 -
C++下基本类型所占位数和取值范围
原文:http://hi.baidu.com/magicdemon/blog/item/821b2e22d7df494cad34debd.htmlC++下基本类型所占位数和取值范围:符号属性 长度属性 基本型 所占位数 取值范围 输入符举例 输出符举例-- --转载 2015-08-03 15:45:47 · 532 阅读 · 0 评论 -
C++之string类
1.String对象的初始化 string s1; 默认构造函数,s1为空串 string s2(s1); 将s2初始化s1的一个副本。也可以带参数如s2(s1,2,4),也可以s2(&s1[2],&s1[4])。 string s3(const原创 2014-09-09 13:39:25 · 929 阅读 · 0 评论 -
迭代器失效
1.对于序列式容器(如vector,deque),删除当前的iterator会使后面所有元素的iterator都失效。这是因为vetor,deque使用了连续分配的内存,删除一个元素导致后面所有的元素会向前移动一个位置。所以不能使用erase(iter++)的方式,还好erase方法可以返回下一个有效的iterator。 vector和list是一个顺序容器,在内存中是一块连续原创 2015-08-04 10:20:19 · 638 阅读 · 0 评论 -
运算符++重载
运算符重载中,后++(--)需要int参数,前置++(--)则不需要。输入输出重载需定义为友元类型。#include"iostream"#include"vector"#include"string"using namespace std;class base{ int data;public: base(int i){ data = i; cout << "base"<<end原创 2015-10-13 20:51:11 · 605 阅读 · 0 评论 -
C++知识点总结(四)——面向对象的编程细节总结
1.空类的默认函数 一般情况下,对于任意一个类A,如果程序员不显示的声明和定义上述函数,C++编译器将会自动的为A产生4个public inline(公有、内联)的默认函数,这4个函数最常见的形式为: (1)默认构造函数 A() {} (2)默认拷贝构造函数 A(const A&){} (3)默认析构函数原创 2015-05-29 14:19:04 · 802 阅读 · 0 评论 -
sizeof总结
1.sizeof常用总结①与strlen比较 strlen 计算字符串的字符数,以"\0"为结束判断,但不统计结束符。 sizeof 计算数据(数组、变量、类型、结构体等)所占内存空间,用字节数表示。②指针与静态数组的sizeof操作 指针均可看为变量类型的一种。因此: 例:int *p;原创 2015-07-01 11:30:01 · 570 阅读 · 0 评论 -
排序法汇总
1.基本概念 主关键字唯一区分不同数据,否则为次关键字。主关键字排序具有唯一性,次关键字否。若相同次关键字的元素排序可能发生交换顺序,则称算法不稳定。常用排序算法优劣衡量指标: ❶时间性能好。即较少的关键字比较次数和元素移动次数。 ❷空间性能好。即辅助缓存小。 ❸稳定性。即相同次关键字元素,排序前后相对位置恒定2.排序方法汇总2.1直接原创 2015-03-18 17:36:56 · 688 阅读 · 0 评论 -
C语言字符串操作常用库函数
函数名: strrchr 功 能: 在串中查找指定字符的最后一个出现 用 法: char *strrchr(char *str, char c);举例:char fullname="./lib/lib1.so"; char *ptr; ptr = strrchr(fullname,'/'); printf("filename is %s",++原创 2015-09-06 16:53:13 · 811 阅读 · 0 评论 -
虚函数和虚表
虚函数表 对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表原创 2015-09-08 16:35:45 · 879 阅读 · 0 评论 -
回溯法
1、0-1背包问题: 给定n种物品,价值分别为v[1],v[2],...,v[n],重量分别为w[1],w[2],...,w[n]。有一个背包其载重容量为c,问应如何选择装入背包中的物品,使得装入背包中的物品的总价值最大。这里每种物品只能装入一次或者不装入背包。这是一个特殊的整数线性规划问题,即在w[1]x[1]+w[2]x[2]+...+w[n]x[n] 一般情况下0-1背包问题是NP难的转载 2015-08-19 14:18:25 · 964 阅读 · 1 评论 -
函数指针
函数指针一、普通的函数指针一旦函数被编译并载入计算机中执行,它就会占用一块内存,这块内存有一个地址,因此函数也有地址。 1. 定义一个函数指针示例代码如下:void (*funcPtr)();这个例子将funcPtr定义为一个指向函数的指针,这个函数没有参数,返回值为空。注:*funcPtr 两侧的括号是必须的,如果去掉括号,原创 2014-06-24 16:02:58 · 669 阅读 · 0 评论 -
C++知识点总结(6)
1.double和float的存储方式 float遵从的是IEEE R32.24 ,而double 遵从的是R64.53。无论是单精度还是双精度在存储中都分为三个部分:符号位(Sign) : 0代表正,1代表为负指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储尾数部分(Mantissa):尾数部分 在计算机存储中,首原创 2015-08-03 22:22:17 · 671 阅读 · 0 评论 -
函数模板
1.函数模板 函数模板为通用函数的描叙。 (1)模板函数不能缩短可执行的程序,仍将使用独立的函数定义。但是模板函数更加简单可靠 (2)可以重载函数模板,和一般重载一样,要求函数特征标(参数表相异),且能够参数表包含非模板参数如int等2.显式具体化 即提供模板的函数的某些具体化版本,当编译器找到与函数调用匹配的具体化定义时,将原创 2015-06-14 22:41:27 · 568 阅读 · 0 评论 -
含动态分配内存的类的声明和定义以及继承
假设基类base,派生类derive1,derive2. 其中前2者含有指针成员(自动分配内存),后者不含。1.声明 三者声明如下:#include"iostream"#include"string"using namespace std;//含有动态分配内存的基类class base{public: base(const char* pointer=N原创 2015-06-03 21:49:53 · 660 阅读 · 0 评论 -
C/C++常用数学函数
math.h 数学函数库,一些数学计算的公式的具体实现是放在math.h里,具体有:1 三角函数double sin (double);double cos (double);double tan (double);2 反三角函数double asin (double); 结果介于[-PI/2,PI/2]double acos (double); 结果介于[0, PI]原创 2014-08-29 16:55:09 · 1994 阅读 · 0 评论 -
C/C++中变量类型最值之宏定义
C/C++ 【climits(limits.h)】 CHAR_BIT Number of bits for a char object (byte) 8SCHAR_MIN Minimum value for an object of type signedchar -127SCHAR_M原创 2014-07-14 15:55:18 · 1283 阅读 · 0 评论 -
成员模板和参数模板
为了实现STL(标准模板库,STL)的设计。模板原创 2014-07-29 21:41:42 · 1367 阅读 · 0 评论 -
模板类和友元的总结和实例验证
在模板类中定义友元函数,分三种qingl原创 2014-07-07 15:54:19 · 1732 阅读 · 0 评论 -
C++中运算符重载
概述:运算符重载是C++多态的重要实现手段之一。一般而言,对于双目运算符,最好将其重载为友元函数;而对于单目运算符,则最好重载为成员函数。但是一定要记得其中的例外情况。运算符重载的四项基本原则:a.不可臆造运算符。b.运算符原有操作数的个数、优先级和结合性不能改变。c.操作数中至少一个是自定义类型。d.保持重载运算符的自然含义。 将运算符重载转载 2014-07-06 21:17:04 · 1218 阅读 · 0 评论 -
C++中explicit关键字的作用
C++中explicit关键字的作用explicit用来防止由构造函数定义的隐式转换。 要明白它的作用,首先要了解隐式转换:可以用单个实参来调用的构造函数定义了从形参类型到该类类型的一个隐式转换。例如: class things{ public: things(const std::string&name ="转载 2014-07-01 20:19:39 · 650 阅读 · 0 评论 -
#ifdef-#endif的作用及其使用技巧
电脑程序语句,我们可以用它区隔一些与特定头文件、程序库和其他文件版本有关的代码。123#ifdef语句1//程序2#endif可翻译为:如果宏定义了语句1则程序2。作用:我们可以用它区隔一些与特定头文件、程序库和其他文件版本有关的代码。代码举例:新转载 2014-07-01 10:14:28 · 3612 阅读 · 0 评论 -
C++运算符优先级表
PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::++--Grouping operatorArray accessMember access from a pointerMember access fr原创 2014-08-29 15:44:02 · 744 阅读 · 0 评论 -
C++之Stack模板类
假设有这样一种情况:某人将一车文件交给小王。倘若小王的抽屉是空的,那么小王从车上取出最上面的文件将其放入抽屉;倘若抽屉是满的,小王从抽屉中取出最上面的文件,放入垃圾篓;倘若抽屉即不空也未满,那么小王抛硬币随机决定是否从文件车拿一份文件放入自己的抽屉,还是从自己的抽屉取出最上面的文件,放入垃圾篓。 显而易见,小王的抽屉就是Stack类。由于不知道存储文件的类型,使用模板来定义;定义如下原创 2014-07-02 10:46:14 · 3468 阅读 · 0 评论 -
C++之vector模板类
vector 称为容器模板类,是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。vector 不是一种数据类型,而只是一个类模板,可用来定义任意多种数据类型。vector 类型的每一种都指定了其保存元素的类型,如vector 和vector 都是数据类型。vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。初始化:[cpp] view p原创 2014-09-11 11:15:54 · 3781 阅读 · 0 评论 -
C++知识点总结(三)
1.字符串查找字符函数strchr strchr函数原型:extern char*strchr(const char *s,char c); 功能:查找字符数组s中首次出现字符c的位置 说明:返回首次出现c的位置的指针,返回偏移指针地址,如果s中不存在c则返回NULL。#include #include int main(原创 2015-03-05 15:05:42 · 696 阅读 · 0 评论 -
C++零碎知识点(一)
1.sizeof中的内存对齐 实例如下[cpp] view plaincopy#include int main(int argc, char *argv[]) { struct _THUNDER{ int iVersion; char cTag;原创 2014-07-29 15:31:25 · 1249 阅读 · 1 评论 -
C++中的引用详解
1.引用的本质 在 C/C++中,变量仅能且只能通过两种方式被访问、传递或获取。即: ⑴通过值 访问 / 传递变量 ⑵通过地址 访问 / 传递变量 – 这种方法就是指针 引用常被认为是变量的别名,实际上 C++ 中根本就没有什么叫做别名的定义。引用变量也就是个指针变量,它也拥有内存空间。最关键的是引用是一种会被编译器自动解引用的指原创 2014-12-26 13:58:56 · 930 阅读 · 0 评论 -
线性表
1.用数组描述的链表,即称为静态链表,元素为一般定义为含游标的结构体。优点:增删元素时,仅需要改变游标,保留了链表的优点;缺点则失去顺序表的随机读取特点。不便于Java使用(不含指针)。 2.顺序表是一种随机存储结构,即随机访问任意元素的时间均为O(1)。分为两种,一种为使用数组静态分配内存的静态顺序表,一种是用malloc和remalloc动态分配存储空间的的动态表。顺表表插入和删除原创 2015-05-11 10:40:35 · 528 阅读 · 0 评论 -
C++中cin.get(),cin.getline(),cin>>,gets(),cin.clear()使用总结
1.cin.get() 实质:类istream所定义对象cin的重载成员函数用于读取单字符 istream& get(char&) int get(void)用于读取字符串 istream &get(char*,int) istrea原创 2014-02-14 22:31:29 · 5122 阅读 · 3 评论