
c++
文章平均质量分 71
qq632544991p
喜爱计算机
展开
-
C/C++中二维数组和指针关系分析
在C/c++中,数组和指针有着密切的关系,有很多地方说数组就是指针式错误的一种说法。这两者是不同的数据结构。其实,在C/c++中没有所谓的二维数组,书面表达就是数组的数组。我猜想是为了表述方便才叫它二维数组。 在本文中,我也就叫它二维数组。在C/C++中,二维数组是数组的数组。数组的每一个元素是一个数组。说起来有点绕,大家都知道,一维数组也和指针那关比较密切,在本文中不重点阐述,下转载 2015-09-30 15:59:27 · 358 阅读 · 0 评论 -
STL list(链表)自定义结构体实现排序
#include#includeusing namespace std;class A{public: int a,b; A(int t1,int t2){a=t1,b=t2;}};struct node{ bool operator()(const A& t1,const A& t2){ return t1.at2.a; //会产生升序转载 2016-03-03 14:34:16 · 2269 阅读 · 0 评论 -
linux c 获取系统时间
使用C语言编写程序需要获得当前精确时间(1970年1月1日到现在的时间),或者为执行计时,可以使用gettimeofday()函数。#include int gettimeofday(struct timeval*tv, struct timezone *tz);其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果:struct timezone{原创 2016-06-27 23:02:58 · 870 阅读 · 0 评论 -
Linux下MPI并行编程环境搭建配置
MPI的全称是Message Passing Interface即标准消息传递界面,可以用于并行计算。MPI有多种实现版本,如MPICH, CHIMP以及OPENMPI。这里我们采用MPICH版本。一、MPICH安装下载:http://www.mpich.org/static/downloads/3.0.4/mpich-3.0.4.tar.gztar -xzvf sof原创 2016-07-10 23:17:28 · 1950 阅读 · 1 评论 -
c++使用 STL string 实现split,trim和replace方法
c++,split,trim,replace原创 2016-06-19 16:37:51 · 2420 阅读 · 0 评论 -
c++ hash_map用法总结
c++ STL库里有自定义的hash_map 方法,但是使用起来并不是那么方便hash_map主要的方法有find(),insert()我结合官方API说明一下他们的用法一、需要特别注意的地方,1.头文件的引用2.如何插入一个键值对(参考一下代码)3.find()的返回值4.如何获取某一个key值相应的value值 hm1_RcIter -> sec原创 2016-06-19 20:54:15 · 15040 阅读 · 1 评论 -
算法竞赛入门经典-找出第一个回文子串
思路:三重循环外层确定回文子串的起点里层确定回文子串的终点最内层给出一次遍历确定是否是回文子串for(i=0;ifor(j=i+1;j{if(满足条件)记录回文长度}#include#include#includeusing namespace std;#define MAX 5000+10char buf[MAX],s[MAX];i原创 2016-08-17 22:12:15 · 518 阅读 · 0 评论 -
算法竞赛入门经典-阶乘的精确值
算法思路:模拟加法进位,设置一个进位计数器,取余运算得到个位,整除运算得到进位内层循环,用于模拟每次的乘法,外层循环用于遍历阶乘运算中的乘数#include#include#includeusing namespace std;#define MAX 1000+10int number[MAX];int main(){ memset(number,0,sizeof(n原创 2016-08-19 17:40:42 · 294 阅读 · 0 评论 -
算法竞赛入门经典-STL数据结构的使用
1.洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程。 现在需要洗2n张牌,从上到下依次是第1张,第2张,第3张一直到第2n张。首先,我们把这2n张牌分成两堆,左手拿着第1张到第n张(上半堆),右手拿着第n+1张到第2n张(下半堆)。接着就开始洗牌的过程,先放下右手的最后一张牌,再放下左手的最后一张牌,接着放下右手的倒数第二张牌,再放下左手的倒数第二张牌,直到最后放下左手的第一张牌。接着把牌原创 2016-08-21 17:26:24 · 706 阅读 · 0 评论 -
集合框架的讲解--面试常问问题
众所周知在我们使用Java中的类的存储的时候经常会使用一些容器,链表的概念,本文将彻底帮您弄清链表的各种概念和模型!!!! 注意理解哦~~~ 大致框架如下: Collection接口有两个主要的子接口List和Set,注意Map转载 2016-08-24 20:06:50 · 468 阅读 · 0 评论 -
关于cuda kernel能否调用printf()函数
笔者最近想编译cuda kernel的代码,不知道何种原因,cuda-gdb总是进入不了cuda 的kernel代码。问了身边的大神们,他们表示自己也没有用过cuda-gdb调试程序。他们告诉我最简单的方式就是设置printf输出中间变量。可是笔者有疑惑了,cuda __device__ 打头的函数不是不支持调用host端的函数吗,为何printf能调?我试着在kernel代码中加上print原创 2016-01-10 14:23:50 · 9495 阅读 · 0 评论 -
iGraph的配置,An In-depth Comparison of Subgraph Isomorphism Algorithms in Graph Databases
这篇博客源自于一篇论文《An In-depth Comparison of Subgraph Isomorphism Algorithms in Graph Databases》这是2013年发表在PVLDB上的一篇文章这篇文章对比了当前子图同构领域的state-of-art算法VF2,QuickSI, GraphQL, GADDI,和SPath并且用c++重写了这几个算法,实现性能最优,原创 2015-12-05 19:58:16 · 1370 阅读 · 7 评论 -
gdb调试工具的使用
1. gdb 调试利器GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 对于一名Linux下工作的c++程序员,gdb是必不可少的工具;1.1. 启动gdb对C/C++程序的调试,需要在编译前就加上-g选项:$g++ -g hello.cpp -o hello调试可执行文件:$原创 2016-01-07 11:05:24 · 427 阅读 · 0 评论 -
c/c++中指针与二维数组的关系demo程序
#include#includeint main(){int (*p)[10];int number=0;p=malloc(sizeof(int)*20*10);for(int i=0;ifor(int j=0;jp[i][j]=number++;for(int i=0;i{for(int j=0;jprintf("%d\t",p[i][j]);原创 2015-10-10 15:50:46 · 380 阅读 · 0 评论 -
cublas库实现矩阵乘法(任意维数)
话不多说,直接进入主题cublas是CUDA上矩阵运算的库,可以在gpu上实现很高的效率。然而关于它的使用,并没有详细的中文资料笔者,经过多次调试成功,分享一点儿心得#include #include #include // Multiply the arrays A and B on GPU and save the result in C// C(m,n) = A(原创 2015-11-17 21:59:35 · 2564 阅读 · 1 评论 -
迭代器 iterator->second含义
转自stackoverflowdown voteacceptedI'm sure you know that a std::vector stores a whole bunch of X objects, right? But if you have a std::map<X, Y>, what it actually stor转载 2015-12-15 22:16:53 · 7419 阅读 · 0 评论 -
c++ 读文件,fscanf结尾问题
使用fscanf()判断文件结尾先看这样一段代码:#include #include int main(){ char ch; FILE *fp = fopen("in.txt", "r"); while (!feof(fp)) { fscanf(fp, "%c", &ch);原创 2016-01-03 14:55:18 · 6805 阅读 · 0 评论 -
c++与java的区别
1.Java在虚拟机上运行 Java源代码并不是被编译成为普通的机器代码。而是被翻译成为虚拟机可以执行的代码。一个Java解释器最终执行这些代码。这其中没有连接的过程;解释在需要的时候动态的加载一些类; 2.Java是完全面向对象的 Java是一种完全面向对象的语言。这意味着你对任何一个Java对象所做的动作都是通过一个方法实现的。第一点就是,再也没有没有主函数转载 2015-12-02 10:05:57 · 363 阅读 · 0 评论 -
c++ 基础语法(逐渐补充)
1.C语言中,printf函数如何处理%s?'\0'是字符串的结尾标志,占一字节,值为0。printf("%s",arr)语句指定了字符串的开始地址arr,函数向后逐字节寻找值为0的字节,找到后把之间的字节按字符解释并输出。会从数组arr的首地址开始 一个字节一个字节的读取并输出 一直到内存中某个字节为0才停止所以有时候 会输出乱码 因为这个字节里面是存储什么都有可能 有时候原创 2016-01-05 11:59:35 · 376 阅读 · 0 评论 -
c++静态链接库与动态链接库
两种库: 包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。 包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library。共有两种链接方式: 动态链接使用动态链接库,允许可执行模块(.dll文件或.exe文件)仅包含在运原创 2015-12-03 21:04:25 · 592 阅读 · 0 评论 -
VC2005生成时提示error c1007错误的解决方案
这两天在编译一个c++工程,由于vs版本问题很是困扰使用的是VS2005,用RELEASE编译的。出现如下错误信息:1>fatal error C1007: 无法识别的标志“-typedil”(在“p2”中)1>LINK : fatal error LNK1257: 代码生成失败google了一下解决方案,大多数的回答都不靠谱,最后在一个犄角旮旯的地方找到了解决方案,与大家原创 2015-12-04 19:45:01 · 7612 阅读 · 0 评论 -
Mars: A MapReduce Framework on Graphics Processors Dedug调试
Mars是一个运行在gpu上的map/reduce框架,笔者最近最近想使用这个框架来做一些图处理的工作。然而mars运行在linux+cuda平台之上,最重要的是2009年开发mars使用的cuda2.0版本,如今cuda已经发展到7.5早期的库已经不支持。如何调试和运行mars困难重重。接下来笔者分享运行和调试mars的一些经验。1.我使用的unbutu版本是14.04,需要安装原创 2016-01-06 18:50:52 · 804 阅读 · 0 评论 -
动态规划问题学习路线:斐波那契数列,最大递增子序列,松鼠捡苹果,最大公共子序列,字符串编辑距离
基本思想:若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题的解以得出原问题的解。 通常许多子问题非常相似,为此动态规划法试图仅仅解决每个子问题一次,从而减少计算量: 一旦某个给定子问题的解已经算出,则将其记忆化存储,以便下次需要同一个子问题解之时直接查表。 这种做法在重复子问题的数目关于输入的规模呈指数增长时特别有用。核心:记忆化搜索与递归下面来看几个具体的问题,由浅原创 2016-09-04 22:59:41 · 2254 阅读 · 2 评论