自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

转载 OpenGL中gl,glu,glut的区别

OpenGL中的gl库是核心库,glu是实用库,glut是实用工具库,gl是核心,glu是对gl的部分封装,glut是OpenGL的跨平台工具库,gl中包含了最基本的3D函数,而glu似乎对gl的辅助,如果算数好,不用glu的情况下,也是可以做出同样的效果。glut是基本的窗口界面,是独立于gl和glu的,如果不喜欢用glut可以用MFC和Win32窗口等代替,但是glut是跨平台的,这就保证了我

2015-10-29 18:00:51 795 1

原创 &&和& ;||和|

&&短路与&与(非短路与)||短路或|或(非短路或)关于它们的用法可以百度,这里介绍它们的区别:就拿“与”来说,要求所有的条件都判断;而如果使用短路与,第一个条件为false的话,则后面的条件将不会判断下面看几段代码就全懂了:#includeusing namespace std;int main(){ if (10 != 10 & 10 /

2015-10-25 16:33:31 408

转载 数组指针和指针数组

1、数组指针(指向数组的指针)(1)数组在内存中的表示创建一个数组就是在内存里面开辟一块连续的空间,比如int a[4];就是在内存里面开辟了一个大小为4*sizeof(int)字节的内存空间。二维数组是特殊的一维数组。先来看一段代码:[cpp] view plaincopy"font-size:16px;">void mai

2015-10-24 23:11:43 544

原创 大数相乘

红色笔是代表下标/*大数相乘问题*/#include#includeusing namespace std;void LargeNumbersOperate(string &, string &);int main(){ string str1, str2; while(cin >> str1 >> str2) LargeNumbersOperate(s

2015-10-24 19:50:53 440

原创 C++按位运算符

位运算是指按二进制进行的运算。在程序中,常常需要处理二进制位的问题。C/C++语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。在实际应用中,建议用unsigned整型操作数,因为带符号操作数可能因为不同机器结果不同。C/C++位操作运算符操作符功能用法~位求反~exp

2015-10-24 14:05:20 618

原创 rbegin()和rend()

rbegin()==end()rend()==begin()但是注意rbegin,rend的类型和begin,end不一样前者是反向迭代器(reverse_iterator),后者是迭代器(iterator)对reverse_iterator执行递增将导致它递减来看看实际使用:#include#includeusing namespace std;int main()

2015-10-24 02:24:08 5117 1

原创 C++常见容器概述

以前的11个容器分别是deque,list,queue,priority_queue,stack,vector,map,multimap,set,multiset,bitsetC++11新增:forward_list,unordered_map,unordered_multimap,unordered_set,unordered_multiset

2015-10-24 01:42:48 808

原创 vector的reserve()和resize()

vector 的reserve()增加了vector的capacity,但是它的size没有改变!resize()改变了vector的capacity同时也增加了它的size!reserve(n) 预分配n个元素的存储空间。reserve()可按以下实现:如果n大于容器现有的容量(即capacity()),则需要在自由内存区为整个容器重新分配一块新的更大的连续空间,其大小为n*

2015-10-24 01:05:20 645

原创 const_iterator

const_iterator对象,它可以指向别的元素,但不能修改其指向的元素,可以不初始化#include#includeusing namespace std;int main(){ int a[5] = { 1,2,3,4,5 }; vector v(a,a+5); vector::const_iterator const_it1;//right vector::co

2015-10-23 23:44:38 445

原创 C++标识符override(覆盖),final(禁止),隐藏

1.覆盖(也叫重写)#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1 #includeusing namespace std;class Base{public: Base() {} virtual void show(char ch) { cout << "Base"; cout << ch << endl;

2015-10-22 18:58:18 1288

转载 右值引用C++11

C++ 11中引入的一个非常重要的概念就是右值引用。理解右值引用是学习“移动语义”(move semantics)的基础。而要理解右值引用,就必须先区分左值与右值。       对左值和右值的一个最常见的误解是:等号左边的就是左值,等号右边的就是右值。左值和右值都是针对表达式而言的,左值是指表达式结束后依然存在的持久对象,右值是指表达式结束时就不再存在的临时对象。一个区分左值与右值的便捷方法是

2015-10-22 11:42:12 639

原创 栈-表达式求值

/*栈的顺序存储-表达式求值*///假设输入字符不超过20个,运算数字都是非负的整数,即0,1,2,,,,等等//#include#include//为了使用atoi函数,具体函数用法及作用参见百度或C plus plus 网站using namespace std;/*(1+9)*2/2-1=9(1+9)*2/20-1=01+0=1*/templatestruct S

2015-10-22 09:02:02 711

原创 C#中的隐藏和重写

使用下面的代码可以隐藏 public class BaseClass { public void Show() { Console.WriteLine("BaseClass!"); } } public class DerivedClass:BaseClass { publi

2015-10-20 16:24:58 626

原创 循环单链表实现约瑟夫环问题

问题:编号为1,2,3,,,n的n个人按顺时针围坐一起,每人有一个正整数密码。一开始任选一个整数作为报数上限值m,从第一个人开始按顺时针向自1开始顺序报数,报到m的停止,出列,并把出列的人手中的密码作为新的m值,从接下来的下一个人接着从一开始报数,依次所有人出列利用单向循环链表实现,按照数列的顺序的打印个人的编号例如,m=6;n=7;7个人的密码分别为 3 1 7 2 4 8

2015-10-19 13:40:33 4887 1

转载 define

#define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但学生在学习时往往不能 理解该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得程序的运行与预期的目的不一致,或者在读别人写的程序时,把运行结果理解错误,这对 C语言的学习很不利。该命令有两种格式:一种是简单的宏定义,另一种是带参数的宏定义。(1) 简单的宏定

2015-10-19 00:11:13 509

转载 C#中的readonly

const 定义的是静态常在对象初始化的时候赋值.以后不能改变它的值.属于编译时常量。不能用new初始化。Readonly 是只读变量.属于运行时变量.可以在类constructor里改变它的值.不能作用于局部变量。const 和 static 不能在一起用,它已经是静态的了。我们都知道,const和static readonly的确非常像:通过类名而不是对象名进行访问,在

2015-10-18 15:25:33 4941

原创 const

#define _CRT_SECURE_NO_DEPRECATE//#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1#include#includeusing namespace std;int main(){ const int a;//error const int b = 1;//right string str1 =

2015-10-18 14:11:37 430

转载 编译,运行

认识C编译执行过程,是C学习的开端。简单说C语言从编码编译到执行要经历一下过程: C源代码编译---->形成目标代码,目标代码是在目标机器上运行的代码。连接---->将目标代码与C函数库相连接,并将源程序所用的库代码与目标代码合并,并形成最终可执行的二进制机器代码(程序)。执行----->在特定的机器环境下运行C程序。 如果用一个图 来表示:  以上

2015-10-18 12:55:57 508

原创 类中的const成员

#includeusing namespace std;class Base{ const int a;public: Base(int _a):a(_a){} //Base(int _a) { a = _a; } //error };int main(){ return 0;}在类中声明变量为const类型,但是不可以初始化const常量的初始化必须在

2015-10-18 12:11:06 995

转载 迭代器

1.迭代器(1)迭代器的本质循环结构有两种控制方式:标志控制和计数控制。迭代器可以把这两种标志控制的循环统一为一种控制方法:迭代器控制,每一次迭代操作中对迭代器的修改就等价于修改标志或计数器。在STL中,容器的迭代器被作为容器元素对象或者I/O流中的对象的位置指示器,因此可以把它理解为面向对象的指针——一种泛型指针或通用指针,不依赖于元素的真实类型。迭代器的概念如图所示:set

2015-10-18 07:58:05 716

转载 STL排序详解

详细解说 STL 排序(Sort)0 前言: STL,为什么你必须掌握1 STL提供的Sort 算法1.1 所有sort算法介绍1.2 sort 中的比较函数1.3 sort 的稳定性1.4 全排序1.5 局部排序1.6 nth_element 指定元素排序1.7 partition 和stable_partition2 Sort 和容器3

2015-10-18 07:55:15 741

原创 控制整数以10,16,8进制输出

我们可以分别使用dec,hex,oct控制符来实现。下面的函数调用将cout对象的计数系统格式状态设置为16进制:hex(cout);完成上述设置后,程序将以16进制打印数值,直到将格式设置为其他选项为止。注意,控制符不是成员函数,因此不必通过对象调用。虽然控制符实际上是函数,但它们通常的使用方式为:coutostream类重载了#include using na

2015-10-17 15:03:23 859

转载 内存管理与效率

1.使用reserve()函数提前设定容量大小,避免多次容量扩充操作导致效率低下。      关于STL容器,最令人称赞的特性之一就是是只要不超过它们的最大大小,它们就可以自动增长到足以容纳你放进去的数据。(要知道这个最大值,只要调用名叫max_size的成员函数。)对于vector和string,如果需要更多空间,就以类似realloc的思想来增长大小。vector容器支持随机访问,因此为了

2015-10-16 14:01:29 498

原创 线性表--单链表

#define _CRT_SECURE_NO_DEPRECATE//#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1#includeusing namespace std;typedef struct Node{ int data; Node *next;}Node;Node *headPointer;//头指针int

2015-10-15 11:05:03 427

原创 线性表--顺序表

#define _CRT_SECURE_NO_DEPRECATE//#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1#include#includeusing namespace std;#define listInitSize 5#define listIncrement 1typedef struct{ int *el

2015-10-11 14:58:48 362

原创 读入优化与clock()

C/C++中的计时函数是clock(),而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下: clock_t clock(void ); 这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock)。其中clock_t是用来保存时间的数据类型,在tim

2015-10-11 13:44:17 392

原创 virtual

#include using namespace std;class Base{public: virtual void show(int i = 1) { cout << i + 1 << endl; }};class BasePlus :public Base{public: virtual void show(int i = 10) { cout <<

2015-10-10 00:25:42 367

原创 八皇后

//#define _CRT_SECURE_NO_DEPRECATE//#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1#include #include//use absusing namespace std;int number = 1;//记录一共多少种排列int a[8][9] = { 0 };//第一列用来存放当前行的皇

2015-10-09 17:25:40 415

转载 Visual Studio2015错误C4996 'strcpy': This function or variable may be unsafe. Consider using strcpy_

原因是Visual C++ 2012 使用了更加安全的 run-time library routines 。新的Security CRT functions(就是那些带有“_s”后缀的函数)解决办法:在头文件前加(一定要在没有include任何头文件之前)#define _CRT_SECURE_NO_DEPRECATE或者#define _CRT_SECURE_C

2015-10-08 23:58:59 3849 1

原创 蛇形填数

假如输入2,那么蛇形填数为4 13 2输入3的话,即7 8 16 9 25 4 3现输入n,输出它的蛇形填数#include #include//use memset#include//use setwusing namespace std;int main(){ int a[20][20]; int n; while (cin >> n) {

2015-10-02 15:49:49 425

原创 骑士走棋盘

骑士的走法,基本上可以使用递回来解决,但是纯綷的递回在维度大时相当没有效率,一个聪明的解法由J.C. Warnsdorff在1823年提出,简单的说,先将最难的位置走完,接下来的路就宽广了,骑士所要走的下一步, 「为下一步再选择时,所能走的步数最少的一步。使用这个方法,在不使用递回的情况下,可以有较高的机率找出走法(找不到走法的机会也是有的) 。#include #include//use

2015-10-01 17:43:45 607

原创 输出的对齐与填充字符

头文件:#include #includeusing namespace std;int main(){ int a = 9999; int b = 999; int c = 99; cout << setw(6) << a << endl; cout << setw(6) << b << endl; cout << setw(6) << c << endl; /*

2015-10-01 12:09:54 1182

原创 如何保留小数

头文件:#include#includeusing namespace std;int main(){ double a=3.141111; double b = 3.149999; cout << fixed << setprecision(2) << a << " "<<b<<endl;//#1 cout << setiosflags(ios::fixed) << s

2015-10-01 10:45:39 459

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除