C++
yang-彧
视频编码,深度学习
展开
-
条件编译
#ifdef,#else和#endif指令的使用#include#define JUST_CHECKING#define LIMIT 4int main(){ int i; int total=0; for (i = 1; i <= LIMIT; i++) { total += 2 * i*i + 1;#ifdef JUST_CHECKING printf("i=%d原创 2015-05-16 14:38:05 · 441 阅读 · 0 评论 -
C++引用
引用引入了对象的一个同义词。定义引用的表示方法与定义指针相似,只是用&代替了*。引用(reference)是c++对c语言的重要扩充。引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名;int main(){ int a=1; int &b = a; int * pi=&a; *pi = 2;原创 2016-03-09 17:31:54 · 297 阅读 · 0 评论 -
c++断言设置
利用断言来检测调用的子函数的前置条件。 包含#include<cassert> 用函数assert来判断条件是否符合。assert(c>150) 当C大于150的时候,即括号里面的条件为真,则不采取任何行动。当条件为假时,则显示一条错误的消息。 简单代码介绍#include<iostream>#include<cassert>using namespace std;int add(i原创 2016-04-02 11:04:57 · 504 阅读 · 0 评论 -
文件输入输出
#include<iostream>#include<fstream>#include<string>int main(){ using namespace std; ofstream fout("jar.tex"); string secret; cin >> secret; fout << "your secret number is :" <<原创 2016-03-10 20:27:32 · 282 阅读 · 0 评论 -
C++中指针和引用的区别
指针和引用的(1)引用不可以为空,但指针可以为空:前面也说过了引用是对象的别名,引用为空——对象都不存在,怎么可能有别名!故定义一个引用的时候,必须初始化。因此如果你有一个变量是用于指向另一个对象,但是它可能为空,这时你应该使用指针;如果变量总是指向一个对象,i.e.,你的设计不允许变量为空,这时你应该使用引用。而声明指针是可以不指向任何对象,也正是因为这个原因,使用指针之前必须做判空操作,而引用就转载 2016-03-10 22:16:03 · 465 阅读 · 0 评论 -
友元函数
友元函数不是类的成员函数,却可以像类的成员函数一样直接访问类的私有成员(包括私有成员函数和私有成员变量)。为了使一个函数成为类的友元函数,只需在类的定义中用friend关键字进行指明即可。`class friendfuc{private: int hours, minutes;public: friendfuc(); friendfuc(int h, int m);原创 2016-04-12 08:37:49 · 334 阅读 · 0 评论 -
C++构造函数
构造函数:在对象被构造的时候被调用(显示调用和隐式调用两种方式),只是在构造对象时根据new对象的参数类型和个数进行选择对应的构造方法进行调用,当没有参数时调用无参构造方法,有参数时调用对应的有参构造方法。构造函数的参数一般用来初始化类的数据成员 构造函数的特点及作用:1.构造函数的命名必须和类名完全相同。2.构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来原创 2016-04-11 08:58:38 · 319 阅读 · 0 评论 -
STL常用容器
STL是C/C++开发中一个非常重要的模板,而其中定义的各种容器也是非常方便我们大家使用。下面,我们就浅谈某些常用的容器。这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点。STL中的常用容器包括:顺序性容器(vector、deque、list)、关联容器(map、set)、容器适配器(queue、stac)。1、顺序性容器 (1)vector vector是一种动态数组原创 2016-04-20 10:23:21 · 438 阅读 · 0 评论 -
算法之美--排序--直接插入排序
插入排序–直接插入排序//从小到大排序//直接插入排序#include<stdio.h>#include<iostream>using namespace std;#define len 20void main(){ int a[len] = { 10, 21,32,56,48,49,87,96,36,58,40,9, 8, 7, 6, 5, 4, 3, 2, 1 };原创 2016-06-27 22:19:24 · 306 阅读 · 0 评论 -
算法之美--插入排序--折半插入排序
//从小到大排序#include<stdio.h>#include<iostream>#define len 20using namespace std;void main()//折半排序{ int a[len] = { 10, 21, 32, 56, 48, 49, 87, 96, 36, 58, 40, 9, 8, 7, 6, 5, 4, 3, 2, 1 }; int原创 2016-06-28 11:24:27 · 357 阅读 · 0 评论 -
算法之美--交换排序--冒泡排序
直接选择排序:每次从剩余的数据对象中选择一个最近的小于待排序的数据的对象,与待排序的数据交换位置。 特性:不稳定排序#include<iostream>#include<stdio.h>using namespace std;#define len 20void main(){ int a[len] = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 19, 1原创 2016-06-28 20:52:04 · 332 阅读 · 0 评论 -
算法之美--选择排序--直接选择排序
直接选择排序:选出剩余数据中的最小项,与待排序数据交换位置 特性:不稳定性#include<iostream>#include<stdio.h>using namespace std;#define len 20void main(){ int a[len] = { 1,2,3,4,30,6,7,8,9,10, 11, 12, 13, 14, 15, 16,17,18,19,原创 2016-06-28 21:23:51 · 338 阅读 · 0 评论 -
约瑟夫环---单向循环链表
题目:实现一个围圈报数的小函数,7个人围一圈,从第1个人开始报数,报道3的人结束游戏,计算出最后剩下一个人的时候,他是第几个人。 代码: 默认从第一个人开始报数#include<iostream>using namespace std;struct Lnode{ int data; Lnode * next;};int Cyclecountoff(int people,原创 2016-08-22 14:18:19 · 1326 阅读 · 0 评论 -
String 类
在C语言中使用数组来存储字符串,C++提供了String 类扩张C++库。要使用String类必须在程序中包含#include<string> 用string对象和字符数组之间的区别在于,可以将string声明成一个简单的变量,而不用像数组那样指定大小。#include<iostrema>#include<stream>int main(){ using namespace std;原创 2016-03-09 10:10:29 · 370 阅读 · 0 评论 -
动态内存分配和指针
C++中使用new delete来实现动态内存分配。#include<iostream>int main(){ using namespace std; int nights = 1001; cout << &nights << endl;//地址A int *pt = new int[10];//创建动态数组 *pt = nights;//为第一个数赋原创 2016-03-08 22:42:41 · 522 阅读 · 0 评论 -
类
类:类成员,构造函数,成员函数 类成员:每个雷克有没有成员,可以有多个成员,成员可以是数据可以是函数或者类型别名。 构造函数:创建一个类类型时,编译器会自动使用一个构造函数来初始化该对象。构造函数是一个特殊的,与类同名的成员函数,用于给每一个数据成员函数设置初始值。 成员函数:在类内部声明函数是必须的。而定义成员函数则是可选的。 类声明:一旦定义了类,我们就知道类里面所有的成员,以及类的对象原创 2015-05-16 15:36:05 · 619 阅读 · 0 评论 -
数组
#include<iostream>const int a = 8;int sum (int arr[], int n);/*int sum (int *arr, int n);*/int main(){ using namespace std; cout << "该程序用于计算数组数值和" << endl; int xinde[a] = { 2, 3,原创 2015-05-28 22:55:17 · 434 阅读 · 0 评论 -
C++中的new的用法
Void TEncRCSeq::create( Int totalFrames, Int targetBitrate, Int frameRate, Int GOPSize, Int picWidth, Int picHeight, Int LCUWidth, Int LCUHeight, Int numberOfLevel, Bool useLCUSeparateModel, Int adapti原创 2015-05-18 22:37:37 · 1410 阅读 · 0 评论 -
c/c++中空指针,空指针常量,NULL
如何是一个指针变量成为空指针: 如果 p 是一个指针变量,则 p = 0;、p = 0L;、p = ‘\0’;、p = 3 - 3;、p = 0 * 17; 中的任何一种赋值操作之后(对于 C 来说还可以是 p = (void*)0;), p 都成为一个空指针,由系统保证空指针不指向任何实际的对象或者函数。 NULL: 是一个标准规定的宏定义,用来表示空指针常量。用 p = NULL; 来使 p原创 2015-05-19 19:51:24 · 3029 阅读 · 0 评论 -
变量的声明和定义以及extern的用法
本文链接变量的声明和定义以及extern的用法变量的声明不同于变量的定义,这一点往往容易让人混淆。 l 变量的声明是告诉编译器,该变量名称已经存在,编译器认识这个名字,不会引起编译错误。 l 对变量进行定义之后,编译器就会给变量分配空间,链接时,链接器可以找到它们的地址。 在程序代码组织过程中,人们往往把变量的声明放在头文件中,而把变量的定义放在源文件中,如下面转载 2015-06-28 22:11:39 · 914 阅读 · 0 评论 -
跨源文件函数/变量调用
在面对一个大工程的时候,在当前的源文件里面用到别的源文件里面的定义的变量是常有的事情。前一段时间一直纠结这个问题,根据最初看类这块的印象,我的做法是将该变量在头文件里面声明,然后在某一个源文件里面声明。再将这个头文件包含到需要调用该变量/函数的原文件里面。但是,最后的结果都是错误的。到现在我依然没有理清这些关系。今天上午查了下到底该怎么调用,根据学长的提示,再一次进行尝试。原来他们搞代码的都不是用包原创 2015-06-15 13:11:55 · 1444 阅读 · 0 评论 -
定义与声明的区别
原文链接 C++声明和定义的区别 收藏《C++Primer》第四版 2.3.5节中这么说到:①变量定义:用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。②变量声明:用于向程序表明变量的类型和名字。③定义也是声明:当定义变量时我们声明了它的类型和名字。④extern关键字:通过使用extern关键字声明变量名而不定义它。1.定义也是声明,extern声明不是定义,即不分配转载 2015-06-15 13:23:17 · 540 阅读 · 0 评论 -
指针与引用(函数形参的值传递,引用传递,指针传递)
本文转载原文地址,尊重原创C++中的引用与指针的区别指向不同类型的指针的区别在于指针类型可以知道编译器解释某个特定地址(指针指向的地址)中的内存内容及大小,而void*指针则只表示一个内存地址,编译器不能通过该指针所指向对象的类型和大小,因此想要通过void*指针操作对象必须进行类型转化。★ 相同点:1. 都是地址的概念; 指针指向一块内存,它的内容是所指内存的地址; 引用是某块内存的别转载 2015-07-08 15:19:31 · 609 阅读 · 0 评论 -
C++new的用法
博文原地址关于C++中NEW的三种用法的详细讲解!!转载 2015-07-29 09:44:59 · 388 阅读 · 0 评论 -
指针的引用(*&)
Void TEncSlice::compressSlice( TComPic* & rpcPic )函数参数传递的是指针的引用 函数参数传递有三种方法,值传递,址传递,传递引用; 这里说的是传递指针的引用。 Void TEncSlice::compressSlice( TComPic* rpcPic )————————传址 Void TEncSlice::compressSlice( T原创 2015-07-31 11:38:52 · 458 阅读 · 0 评论 -
内存模型和名称空间
C++程序分为三部分 头文件:包含结构声明和使用这些结构的函数原型 源代码文件:包含与结构有关的函数代码 源代码文件:包含调用与结构相关函数的代码 2.**避免头文件在一个文件中多次被包含的方法: #ifndef COORDIN_H_ ........ #endif 3.C++中变量的存储时间 (1)自动存储持续性:在函数原创 2016-03-08 14:42:03 · 283 阅读 · 0 评论 -
类继承
类继承的目的:C++提供了比修改代码更好的方法来扩展和修改类。这种方法叫类继承,他能够从已有的类派生出新的类,而派生类继承了原有类的所有特征,包括方法。 原始类:基类 继承类:派生类原创 2016-03-08 16:02:15 · 310 阅读 · 0 评论 -
C++父类子类间函数重定义,虚函数重写(覆盖)以及重载
写这篇文章的时候我还是不太确定重定义,重写(覆盖),重载之间的确切的区分方法。下面是我今天的理解以及相关测试代码,以待后观!! 第一:简单的子类重定义父类成员函数(函数三要素:返回类型,函数名,参数):既然是重定义,函数名肯定是相同的,不然就没有必要讨论了。三要素都相同,自然可以成立,现在的问题是返回类型和参数是不是可以随意给,同样能隐藏父类的成员函数? (1)函数名,返回类型,参数都相同#in原创 2016-08-12 22:48:45 · 31812 阅读 · 3 评论