C++
GPU小码农
GPU Arch/Ray tracing/游戏图形
展开
-
对vector使用指针
#include #include #include using namespace std;int main(){ vector a,b,c; for (int i = 0; i < 3; i++) { a.push_back( i ); b.push_back( i + 3); c.push_back(i + 6); } vector* seq[3] =原创 2016-09-21 16:54:28 · 2677 阅读 · 0 评论 -
C++ :error LINK2005:函数XXX已经在main.obj中定义--解决方法
我的情况是这样的: 我在头文件中定义了一个函数,然后这个函数被其他函数引用。但是编译的时候死活通不过,一直报错:error LINK2005,费了好大力气-_-才解决。#include "aabb.h"#pragma once#define M_PI 3.14159aabb surrounding_box(aabb box0, aabb box1) { vec3 smal原创 2017-09-07 09:42:00 · 13213 阅读 · 3 评论 -
MFC新手使用小结
首先,很多人黑MFC,我觉得这是不对的,他们老是说MFC复杂,过时。复杂暂且不说,过时我不认同,只要能做出合格的效果,最终用户才不会去管你用的MFC还是QT,MFC没有过时,它可以做出我想要的效果,而且不费劲。 小结一下最近使用MFC的经验,方便以后再使用。 新建一个win32项目,注意不是新建MFC应用程序,因为后者太大了,前者轻量级。 新建完项目后,开始添加原创 2017-10-11 09:24:09 · 1506 阅读 · 0 评论 -
快速理解c++编译器名称查找规则koenig lookup(ADL)
示例代码深入浅出让你快速理解c++编译器名称查找规则koenig lookup(ADL)原创 2017-10-11 09:56:04 · 1543 阅读 · 0 评论 -
windows程序崩溃生成dump文件
第一种: 通过任务管理器:这种适用在程序挂了(crash)的时候进程还未退出,比如我运行程序,出现了下面的错:此时打开任务管理器,右击相应进程,点击"Create Dump File“:一会创建完成:然后把这个DMP文件拷到开发机器上,用VS打开: 会出现下面的界面,要想知道发生错误时候的调用栈,需要设置symbol的路径,点转载 2017-11-09 10:10:26 · 2860 阅读 · 0 评论 -
C++11新特性学习笔记—变长参数的宏定义以及__VA_ARGS__
在C99标准中,我们就已经可以使用变长参数的宏定义。变长参数的宏定义是啥??就是在宏定义的参数列表的最后一个参数为省略号。而现在C++ 11 中,可以使用预定义宏__VA_ARGS__可以在宏定义的实现部分替换省略号所代表的字符串。 EX: #include //定义LOG宏来记录代码位置中一些信息,程序员可以根据stderr产生的日志追索到代码中产生//这些记录的位原创 2017-11-03 10:03:52 · 3576 阅读 · 0 评论 -
C++11新特性学习笔记—long long
C++11整型的最大改变就是加入了long long。#include #include using namespace std;int main(){ long long ll_min = LLONG_MIN; long long ll_max = LLONG_MAX; unsigned long long ull_max = ULLONG_MAX; printf("m原创 2017-11-03 10:24:36 · 634 阅读 · 0 评论 -
C++11新特性学习笔记—noexcept关键字
//动态异常声明thro由于很少使用,在c++11中被弃用了//表示函数不会抛出异常的动态异常声明throw()也被新的noexcept异常声明所取代//noexcept修饰的函数不会抛出异常//在c++11中,如果noexcept修饰的函数抛出了异常,编译器可以选择直接调用std::terminate()//来终止程序的运行,这比基于异常机制的throw()在效率上会高出一些。//使用原创 2017-11-03 14:28:38 · 3375 阅读 · 0 评论 -
C++11新特性学习笔记—final和override关键字
一、final关键字 为什么c++现在才提供final这个关键字?很奇怪。 和Java一样,c++中的final关键字是用来修饰一个函数,防止这个函数被子类重写。 二、override关键字 这个关键字作用蛮大的。在C++中,有父类A,子类B,父类中有虚函数x,子类B继承原创 2017-11-03 15:26:36 · 1735 阅读 · 0 评论 -
C++11新特性学习笔记—继承构造函数的使用
/*为了避免透传接口,在c++中使用using 关键字如果派生类要使用基类的成员函数的话,可以通过使用using声明来完成*/#includeusing namespace std;class Base{public: Base(); Base(int i) :m(i) {} int m; void f(double x) { cout << "base x = " <<原创 2017-11-03 19:41:21 · 363 阅读 · 0 评论 -
C++11新特性学习笔记—委托构造函数的使用
#include#include#include/*委托构造函数的使用情景:当一个类中存在大量构造函数1,2,3,4....且1,2,3,4...直接按存在大量相同操作的时候,可以抽象出一个公共的操作--形成委托构造函数,以此降低代码量*/using namespace std;class TDConstructed{ //抽象出通用的--委托构造函数 template T原创 2017-11-03 20:03:24 · 395 阅读 · 0 评论 -
leetcode problem solve 2——Add Two Numbers
题意就不再赘述了,这里主要总结一下解题过程中感触比较深的地方。 这道题仅仅是medium水平,但是我却做了两个多小时.....我觉得主要原因是我一开始觉得很简单,然后一上来就写代码,没有做好前期的问题剖析工作,导致后面每次提交都出现不同的案例测试无法通过,然后真的就慌乱了,心想:这种问题我居然都无法控制住??!!然后心态就崩了....开始焦躁,又试图使自己再次专注解题。做人真的不能原创 2017-11-05 17:34:24 · 328 阅读 · 0 评论 -
C获得当前系统时间
void printCurrentTime(){ time_t tt = time(NULL);//这句返回的只是一个时间cuo tm* t = localtime(&tt); printf("\n%d-%02d-%02d %02d:%02d:%02d\n", t->tm_year + 1900, t->tm_mon + 1, t->tm_mday, t->tm_hour,原创 2017-09-05 15:33:21 · 1410 阅读 · 2 评论 -
C++ 取得系统当前时间
原文:点击打开链接#include //* 方法一 time_t tt = time(NULL);//这句返回的只是一个时间cuo tm* t= localtime(&tt); printf("%d-%02d-%02d %02d:%02d:%02d\n", t->tm_year + 1900, t->tm_mon + 1, t->tm_mday,转载 2017-08-03 21:51:16 · 522 阅读 · 0 评论 -
C++——函数模板和函数指针
#include #include #include using namespace std;//定义函数模板template void display_message(const string &msg, const vector &vec);template void display_message(const string &msg, const list <);//函原创 2016-09-21 19:01:23 · 1894 阅读 · 0 评论 -
std::function 使用
#include #include using namespace std;std::function Functional;int TestFunc(int a ){ return a;}//lambda expressionauto lambda = [](int a)->int{return a ; };//fang funcclass Functor{publi原创 2016-10-27 14:24:58 · 415 阅读 · 0 评论 -
extern "C"
C++保留了一部分过程式语言的特点,因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。 extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。 加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。原创 2017-04-01 10:36:16 · 310 阅读 · 0 评论 -
记一个段错误问题
段错误原创 2017-05-28 11:25:51 · 442 阅读 · 0 评论 -
二级指针的理解
上午看到一段代码,关于二级指针的,就看了看:void GetMemory(char *p, int num){ p = (char *)malloc(sizeof(char) * num);}int main(int argc, char *argv[]){ char *str = NULL; GetMemory(str, 100); strcpy(str,原创 2017-05-18 11:04:45 · 654 阅读 · 0 评论 -
对象的创建、回收、new和malloc
#include using namespace std;#include #include class object{public : object(); ~object(); virtual int hit()=0;}; object::object(){ // printf("object\n"); int x = 5;}原创 2017-05-18 14:00:52 · 783 阅读 · 0 评论 -
C/C++生成可执行文件过程
[转载]C/C++生成可执行文件过程编译的概念:编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。编译的完整过程:C源程序-->预编译处理(.c)-->编译、优化程序(.asm、.s)-->汇编程序(.obj、.o、.a)-->链接程序(.转载 2017-06-03 15:37:14 · 1172 阅读 · 0 评论 -
c++之const小结-使用注意
尽可能的使用const。1. 尽量的以const、enum、inline替换掉#define。#define是预处理,对于形似函数的宏,最好改用inline函数替换#define,即“宁可以编译器替换预处理器”。因为#define不被视为语言的一部分,那正是它的问题所在。2. 注意,下面两种写法意义相同:void f1( const Widget* pw);void f1( Wi原创 2017-06-24 10:27:00 · 332 阅读 · 0 评论 -
C++纯虚函数和Java中的抽象函数区别
一直我对c++纯虚函数的理解有个误区:纯虚函数是不能给出定义的。果然是学艺不精。c++中的纯虚函数和java中的抽象函数很类似,我把相关概念搞混淆了,这里总结一下:java中的抽象函数是只有函数声明,没有方法体。而c++中的纯虚函数是可以有方法体,也就是说是可以给出定义的,并且,在c++中,子类还可以调用父类的纯虚函数-_-。对于用习惯了java而对c++认识比较少的同学,可能看到这里有点吃惊。所原创 2017-06-24 11:18:49 · 1965 阅读 · 0 评论 -
c++调试记录--内存无法访问以及逻辑正确却总是得到错误结果
一定要初始化变量。永远要初始化。这个原则在《effective c++》中也作者提到过。 我从昨天到今天一直在修bug。 之前的代码在ubuntu14.04上跑一点问题都没有,昨天把代码放到windows下跑,各种问题。 我在vs2013中调试我的代码,程序运行到一半总是报XXXX内存无法访问,相当奇怪。后来我从release模式切换到debug原创 2017-08-01 13:27:36 · 1262 阅读 · 0 评论 -
c++调试记录:error LINK2005: XXXX已经在 .obj 中定义"
当项目代码比较多,文件也比较多的时候,这个问题真的非常棘手,可能会耗费大量的时间来排查错误。 问题出现的原因:在.h文件中定义了变量。然后A.cpp包含了该.h,B.cpp包含了该.h,于是在链接的时候,生成A.obj,B.obj,但是 .h中定义的变量会在这两个obj中又被定义,所以,导致了这个LINK2005错误。 解决方法:不要在.h中定义变量!!在.h中只声明函数,类原创 2017-08-01 14:20:47 · 3292 阅读 · 0 评论 -
leetcode problem solve 1——Two Sum
这道题目难度级别:easy。 题意是给定一个整形数taget和一个vectorarr,这个target是arr中两个数求和的结果,要求返回arr中这两个数的索引号。 我的解题思路是:(talk is cheap,直接show code吧) class Solution {public: vector twoSum(vector& nums,原创 2017-11-05 14:35:26 · 293 阅读 · 0 评论