C
文章平均质量分 83
happyprince
这个作者很懒,什么都没留下…
展开
-
map注意的两个问题
代码1void main() { map< int, int* > mapInt; for ( int i = 0; i < 5; i++ ) { mapInt[ i ] = new int( i ); } // 再插入键值为2的元...原创 2014-12-11 14:21:02 · 127 阅读 · 0 评论 -
OpenGL之绘点
画点的例子:#include "stdafx.h"#include<gl/glut.h>#include<cmath>// Define a constant for the value of PI#define GL_PI 3.1415f// Rotation amountsstatic GLfloat xRot = 0.0f;sta...原创 2014-08-02 13:16:46 · 115 阅读 · 0 评论 -
C++模板之特化与偏特化详解
转自:http://www.jb51.net/article/56004.htm这篇文章主要介绍了C++模板之特化与偏特化详解,本文讲解了什么是C++模板、模板特化、模板偏特化、特化与偏特化的调用顺序等内容,需要的朋友可以参考下.前言说到C++模板,这个已经不是什么新东西了,自己在实际开发中也用过;对于C++模板特化和偏特化,对于别人来说,已经不是什么新东西了,但是对于我来说,...原创 2015-01-07 14:44:55 · 484 阅读 · 0 评论 -
c++中的typename与class<转>
在泛型编程的形参表中,关键字typename和class具有相同的含义,可以相互使用,两个关键字都可以在同一模板形参表中使用: 1. typename用在模板定义里,标明其后的模板参数是类型参数。 [html] view plaincopytemplate<typename T,class U> calc (const T&, co...原创 2015-01-07 08:51:08 · 184 阅读 · 0 评论 -
traits:Traits技术初探
概述:traits是一种特性萃取技术,它在Generic Programming中被广泛运用,常常被用于使不同的类型可以用于相同的操作,或者针对不同类型提供不同的实现.traits在实现过程中往往需要用到以下三种C++的基本特性:enumtypedeftemplate (partial) specialization其中:enum用于将在不同类型间变化的标示统一成一个,它在C++中常常被用于在...原创 2015-01-06 12:49:54 · 189 阅读 · 0 评论 -
POD型别
POD全称Plain Old Data。通俗的讲,一个类或结构体通过二进制拷贝后还能保持其数据不变,那么它就是一个POD类型。平凡的定义:1. 有平凡的构造函数;2. 有平凡的拷贝构造函数;3. 有平凡的移动构造函数;4. 有平凡的拷贝赋值运算符;5. 有平凡的移动赋值运算符;6. 有平凡的析构函数;7. 不能包含虚函数;8. 不能包含虚基类。#inclu...原创 2015-01-06 12:37:30 · 280 阅读 · 0 评论 -
c++核心基础知识(内存管理)
内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权,还放弃了...原创 2015-01-04 22:22:53 · 153 阅读 · 0 评论 -
内存分配器<转>
题记:内存管理一直是C/C++程序的红灯区。关于内存管理的话题,大致有两类侧重点,一类是内存的正确使用,例如C++中new和delete应该成对出现,用RAII技巧管理内存资源,auto_ptr等方面,很多C/C++书籍中都使用技巧的介绍。另一类是内存管理的实现,如linux内核的slab分配器,STL中的allocator实现,以及一些特定于某种对象的内存管理等。最近阅读了一些内存管理实现方...原创 2015-01-04 22:07:26 · 226 阅读 · 0 评论 -
operator new在C++中的各种写法
http://blog.sina.com.cn/s/blog_3c6889fe0100tqe8.html乍一看,在C++中动态分配内存很简单:new是分配,delete是释放,就这么简单。然而,这篇文章讲得要复杂一点,并且要考虑到自定义层次。这也许对简单的程序并不重要,但对你在代码中控制内存却是十分必要的,是否能写一个自定义的分配器,某种高级内存管理表或一个特定的垃圾回收机制。这篇文章...原创 2015-01-04 19:27:40 · 140 阅读 · 0 评论 -
可变参数va_list
1.要在函数中使用参数,首先要包含头文件<stdarg.h>。这个头文件声明了一个va_list类型,定义了四个宏,用来遍历可变参数列表。void va_start(va_list ap, last);type va_arg(va_list ap, type);void va_end(va_list ap);void va_copy(va_list dest, va_...原创 2014-12-26 17:45:20 · 138 阅读 · 0 评论 -
C 内存分配<转>
c 内存分配1、程序代码区:存放函数体的二进制代码。 2、全局区数据区:全局数据区划分为三个区域。 全局变量和静态变量的存储是放在一块的。初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。常量数据存放在另一个区域里。这些数据在程序结束后由系统释放。我们所说的BSS段(bss segment)通常是指用来存放程序中未初始化的全局变...原创 2012-08-22 23:16:38 · 97 阅读 · 0 评论 -
<求教>一个C关于字符串的奇怪问题:同一段代码不同位置出错
代码:#include<stdio.h>#include<string.h>int main(){ char * m2 ;//只有指针的一定要放在前面。如果在下面一定会出错。为什么呢? char * x = strcpy(m2,"123") ; printf("%s\n",m2) ; int i = 1 ; re...2012-08-22 22:06:43 · 98 阅读 · 0 评论 -
C/C++中const关键字详解<转>
为什么使用const?采用符号常量写出的代码更容易维护;指针常常是边读边移动,而不是边写边移动;许多函数参数是只读不写的。const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替),分类如下: 常变量: const 类型说明符 变量名 常引用: const 类型说明符 &引用名 常对象: 类名 const 对象名 常成员函数: 类名::...原创 2012-08-22 20:17:05 · 74 阅读 · 0 评论 -
C语言的函数返回值
一:背景谈到C语言的函数返回值,可能会感觉很亲切,不就是一个函数返回值嘛,当初学C语言的时候早就学过了很easy嘛,我曾经也是这么想的。后来要上研究生了,研究生阶段搞得就是C,所以又重新开始学习C,学习C的过程中遇到了很多问题,在此博客中一一记录。实际过程中遇到的第一个问题自然就是函数返回值了。如果有人问你在一个函数中声明一个字符串数组,最后再return这个数组。这可以实现嘛?如果是问我我...原创 2014-08-10 20:20:37 · 267 阅读 · 0 评论 -
C/C++ 内存分配方式,堆区,栈区,new/delete/malloc/free
内存分配方式内存分配方式有三种:[1]从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。[2]在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。[3]从堆上分配,亦称动态内存分配。程...原创 2014-08-10 20:52:47 · 165 阅读 · 0 评论 -
关于C++ const 的全面总结<转>
C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。 一、Const作用 如下表所示:No.作用说明参考代码...原创 2014-11-14 12:56:28 · 87 阅读 · 0 评论 -
C++DLL编程详解
DLL(Dynamic Link Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL,该DLL不必被包含在最终EXE文件中,EX...原创 2014-10-08 19:44:13 · 477 阅读 · 0 评论 -
C++&&QT调试时出现的一些错误
错误原因解决1 error C2533: “GDQEditPolygonFrm::{ctor}”: 构造函数不能有返回类型头文件里定义完类后,在大括号外没分号加分号2connect方法,没有与slot方法绑定1.对于继承的类,容易忽略Q_OBJECT的增加 2. 信号与...原创 2014-10-08 15:14:03 · 328 阅读 · 0 评论 -
【转】C++ function、bind以及lamda表达式
本文是C++0x系列的第四篇,主要是内容是C++0x中新增的lambda表达式, function对象和bind机制。之所以把这三块放在一起讲,是因为这三块之间有着非常密切的关系,通过对比学习,加深对这部分内容的理解。在开始之间,首先要讲一个概念,closure(闭包),这个概念是理解lambda的基础。下面我们来看看wikipedia上对于计算机领域的closure的定义:A closu...原创 2014-09-11 09:42:16 · 97 阅读 · 0 评论 -
STL函数对象及函数对象适配器【转】
一 函数对象Functor STL中提供了一元和二元函数的两种Functor,通过unary_function和binary_function提供了这两种不同参数数量的Functor的基本结构,在这两个类型中,分别内嵌定义一元和二元函数操作在模版推演的时候需要用到的typedef. //一元函数的定义为template<class _A, class _R>struc...原创 2014-09-10 09:24:56 · 131 阅读 · 0 评论 -
typedef和typename关键字[转]
1、类型说明typedef类型说明的格式为:typedef 类型 定义名;类型说明只定义了一个数据类型的新名字而不是定义一种新的数据类型。定义名表示这个类型的新名字。例如: 用下面语句定义整型数的新名字:typedef int SIGNED_INT;使用说明后, SIGNED_INT就成为int的同义词了, 此时可以用SIGNED_INT 定义整型变量。例如: S...原创 2014-09-10 09:21:36 · 106 阅读 · 0 评论 -
C/C++中extern关键字详解[转]
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名...原创 2014-09-09 11:38:23 · 84 阅读 · 0 评论 -
vs2008【断点无效】解决方法
有时候,我们在用vs2008调试的时候,会出现断点无效。如下图: 第一反应,要看想一下是不是在debug下。如果在Release下,请参考我另篇文章 【怎么在Release下调试代码】 如果是在debug下:1.检查工程配置是否设置正确。 C++>General->Debug Information Format->Program Databa...原创 2015-04-13 10:05:55 · 220 阅读 · 0 评论 -
MYSQL在C—API 中可用的函数
mysql_affected_rows()返回被最新的UPDATE, DELETE或INSERT查询影响的行数。mysql_close()关闭一个服务器连接。mysql_connect()连接一个MySQL服务器。该函数不推荐;使用mysql_real_connect()代替。mysql_change_user()改变在一个打开的连接上的用户和数据库。...原创 2014-08-24 23:03:35 · 110 阅读 · 0 评论 -
C & C++的编译
C/C++编译过程C/C++编译过程主要分为4个过程1) 编译预处理2) 编译、优化阶段3) 汇编过程4) 链接程序一、编译预处理(1)宏定义指令,如#define Name TokenString,#undef等。 对于前一个伪指令,预编译所要做的是将程序中的所有Name用TokenString替换,但作为字符串常量的 Name则不被替换。对于后...原创 2014-08-12 09:21:23 · 95 阅读 · 0 评论 -
C++全局变量的声明和定义
(1)编译单元(模块) 在VC或VS上编写完代码,点击编译按钮准备生成exe文件时,编译器做了两步工作:第一步,将每个.cpp(.c)和相应的.h文件编译成obj文件;第二步,将工程中所有的obj文件进行LINK,生成最终.exe文件。 那么,错误可能在两个地方产生:一个,编译时的错误,这个主要是语法错误;一个,链接时的错误,主要是重复定义变量等。 编...原创 2014-08-11 20:51:20 · 98 阅读 · 0 评论 -
C语言switch语句
既然有了if、else 组合为什么还需要switch、case 组合呢?一、不要拿青龙偃月刀去削苹果那你既然有了菜刀为什么还需要水果刀呢?你总不能扛着云长的青龙偃月刀(又名冷艳锯)去削苹果吧。如果你真能做到,关二爷也会佩服你的。^_^。if、else 一般表示两个分支或是嵌套表示少量的分支,但如果分支很多的话……还是用switch、case 组合吧。其基本格式为:switch(varia...原创 2014-08-11 17:02:28 · 236 阅读 · 0 评论 -
一个关于C语言循环的错误
有时候人的思维会定势,这是一个很可怕的问题,特别在检查代码的时候,就是无论怎样想,也就怎样错。今天这个可怕的事情也被出现了。如下的代码:#include<stdio.h>#define N 3int main(){ int i ,j , k; i = 0 ; j = 0 ; k = 0 ; ...2012-08-17 18:44:12 · 102 阅读 · 0 评论 -
基于二进制的集合(c语言)
用C去操作集合,有时候觉得十分的麻烦,不过,集合又一定要用。苦思了一些日子,当集合遇到了二进制,也当二进制到了位运算。这个就很好解决。建立这样的一个模型,当集合A有元素a,就用1在a相应的位表示出来,否则就为0 。一个例子:A={a,b,c} --------7(111) A有一字集A1={a,c}-------------5(101)就这样表示。集合...2012-08-17 17:20:04 · 148 阅读 · 0 评论 -
不用除法运算符的除法
题目描述:给定一数组a[N],我们希望构造数组b [N],其中b[j]=a[0]*a[1]…a[N-1] / a[j],在构造过程中,不允许使用除法:要求O(1)空间复杂度和O(n)的时间复杂度;除遍历计数器与a[N] b[N]外,不可使用新的变量(包括栈临时变量、堆空间和全局静态变量等);实现程序(主流编程语言任选)实现并简单描述。代码: #include <st...原创 2013-04-04 09:53:03 · 303 阅读 · 0 评论 -
r-组合
算法描述而下(来自组合数学):从r-组合a1a2...ar=1234....r开始。当a1a2...ar!=(n-r+1)(n-r+2)...n时,做(1)确定最大的整数K,使ak+1<=n且ak+1不是a1,a2,a3,...,ar.(2)用r-组合 a1...ak-1(ak+1)(ak+2)...(ak+r-k+1)替换a1a2...a...2012-10-29 18:14:31 · 276 阅读 · 0 评论 -
全排列的实现(C)
找工作,笔试经常会出现一个题,怎样生成一个集合内所有元素的全排列。刚开始的时候没有觉得这是一个难的问题。其实,当写在试卷上,真的不太会,作答的过程感觉心里没有什么底。回来后,查了一些资料,看了一些书,对这个问题有一定的认识,举一个例去清晰一下题目的意思,例子为:字符集{1,2,3}的全排列:123,132,312,321,231,213。进一步认识全排列生成:进一步方法考察: ...2012-10-24 16:42:49 · 115 阅读 · 0 评论 -
1+2+…+n的思考
很久前一个同学面试回来,他说面试官给他出了一道很让他费解的题。 题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。 当时我听了,也傻了,怎么可以这样呀?觉得这个东西没有什么用呀,在一般写程序时都不会这样,觉得没有什么意义。后来并没有放在心上。某天,在想知识点的结构树时候,遇到了一个组合模...2012-05-05 20:16:40 · 113 阅读 · 0 评论 -
单向链表是否有环问题(C)
问题描述:在单向链表中,每个结点都包含一个指向下一个结点的指针,最后一个结点的这个指针被设置为空。但如果把最后一个结点的指针指向链表中存在的某个结点,就会形成一个环,在顺序遍历链表的时候,程序就会陷入死循环。如何检测一个链表中是否有环,如果检测到环,如何确定环的入口点(即求出环长,环前面的链长)。 一种比较耗空间的做法是,从头开始遍历链表,把每次访问到的结点(或其地址)存入一个...原创 2012-05-01 19:19:33 · 113 阅读 · 0 评论 -
查找任意两个节点的公共父节点的整理
/*基本思路是对需要查找的节点赋权值为1,其它节点权值为0.那么只要找到一个节点的左右权值都不为1的点就是需要查找的公共父节点。 */static class Node { String value; Node left; Node right; } static Node parent; ...原创 2012-04-30 21:27:54 · 426 阅读 · 0 评论 -
Makefile经典教程
该篇文章为转载,是对原作者系列文章的总汇加上标注。支持原创,请移步陈浩大神博客:(最原始版本)http://blog.csdn.net/haoel/article/details/2886我转自一个博主 基于原博客的整理版本:http://blog.csd...转载 2018-07-22 10:36:11 · 370 阅读 · 0 评论 -
并行计算02-《cuda by examples》代码配置及julia例子
摘要:回忆VS的使用,把《cuda by examples》书的代码配置一下,使julian在CPU及GPU都跑起来, 对比GPU与CPU的编程的区别。VS很久没用,用起有些不熟悉了,今天复习了一下VS的使用,练习一下把一些例子使用起来,记录一下。感觉一个技术如果不用,一段时间就可以忘记得一点印象都没有,这时就得回忆了,一边做一边回忆。1. h文件包的存放问题,本想创建一个文件夹来存放头文件的,把所原创 2017-11-19 13:19:09 · 695 阅读 · 0 评论 -
并行计算01-基于cuda编程01
摘要:第一个cuda编程,与一般的区别思维的区别;另外实践了一个小例子进行感性入门测试。先用起来再说,后面再去找理解原理,学与做相结合的学习方法。1. 安装cuda这个PPT讲了cuda的安装 https://wenku.baidu.com/view/a2fab32f5fbfc77da269b1f8.html 2. 创建项目3. Host与device编程的区别C编译,在Host上运行:#inc原创 2017-11-18 23:37:48 · 625 阅读 · 0 评论 -
你遇到过这样的问题吗?(string)
下面是一段代码,它能出现一种很奇怪的错误,不知道为什么!#include#includeint main(){ char m3[2] ; strcpy(m3,"123456") ; printf("%s",m3) ; return 0 ;}运行结果就是一个类似于循环的结果(没有终止,还在继续运行):另外一段代码显得就更奇原创 2012-08-23 07:44:55 · 425 阅读 · 0 评论 -
插入、堆排序
排序的最初数据结构是在线性表的基础上的,线性表这个东西就好像很多站在一条很长的队伍上,排序操作就是给这些人从高到矮或从矮到高进行排列。线性很容易理解,也很容易明白。在一列杂乱的队列中如何排序?用插入法来解释,从前面开始一个个站出来,这个人前面排好了,这个人后面是杂乱的。对于他本身找一个位置让自己安身,比他高的都向移动一个位置,一直没有比他的了,空出的位置就是他要站的。对于性能,插入中,一个原创 2012-08-21 21:16:19 · 756 阅读 · 0 评论