C/C++
文章平均质量分 62
dwx2046
这个作者很懒,什么都没留下…
展开
-
isspace函数
isspace,是一种计算机用语,主要用于检查参数c是否为空格字符。函数说明检查参数c是否为空格字符,也就是判断是否为空格(' ')、水平定位字符('\t')、归位键('\r')、换行('\n')、垂直定位字符('\v')或翻页('\f')的情况。[1] 返回值若参数c为空格字符,则返回TRUE,否则返回NULL(0)。附加说明此为宏定义原创 2016-04-11 11:12:47 · 13892 阅读 · 0 评论 -
map中的元素按照key,value值排序
C++ STL中Map的按Key排序其实,为了实现快速查找,map内部本身就是按序存储的(比如红黑树)。在我们插入键值对时,就会按照key的大小顺序进行存储。这也是作为key的类型必须能够进行#include #include #include using namespace std; typedef pair PAIR; ostream& operat原创 2016-09-17 17:10:47 · 1480 阅读 · 0 评论 -
C/C++语言字符串操作总结大全(超详细)
字符串操作strcpy(p, p1) 复制字符串strncpy(p, p1, n) 复制指定长度字符串strcat(p, p1) 附加字符串strncat(p, p1, n) 附加指定长度字符串strlen(p) 取字符串长度strcmp(p, p1) 比较字符串strcasecmp忽略大小写比较字符串strncmp(p, p1, n) 比较指定长度字符原创 2016-08-13 11:32:24 · 842 阅读 · 0 评论 -
vector<bool>效率问题的原因和替代方法
今天在刷一道题目的时候遇到这样一个效率问题,c数组效率 > vector效率 > vector效率,查找资料发现:vector不是容器,至少,不是标准意义上的容器。vector的名称有点让人误解,因为其内部元素实际上并不是标准的bool值,标准的bool值至少与char拥有一样的大小,从而可以被“正常”使用。然而C++标准对于vector值有其特殊的实现方法。目的是为了减小空间原创 2016-08-10 15:52:45 · 1508 阅读 · 0 评论 -
C++volatile详解
1. 为什么用volatile? C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier。这是 BS 在 "The C++ Programming Language" 对 volatile 修饰词的说明:A volatile specifier is a hint to a compiler that a原创 2016-07-08 10:44:46 · 1807 阅读 · 0 评论 -
C++traits技术的理解
traits是c++中的自动类型推断,可以用来获得一个类型的相关信息。比如我们有一个泛型的迭代器类,其中T为所指向的类型。template class myIterator{ ...};当我们使用myIterator时,怎样才能获知它所指向的元素的类型呢?我们可以为这个类加入一个内嵌类型,像这样:template class myIterator{ typedef转载 2016-07-07 22:17:27 · 3438 阅读 · 1 评论 -
C++内存模型
关于乱序说到内存模型,首先需要明确一个普遍存在,但却未必人人都注意到的事实:程序通常并不是总按着照源码中的顺序一一执行,此谓之乱序,乱序产生的原因可能有好几种:编译器出于优化的目的,在编译阶段将源码的顺序进行交换。程序执行期间,指令流水被 cpu 乱序执行。inherent cache 的分层及刷新策略使得有时候某些写读操作的从效果上看,顺序被重排。以上乱序现象虽然来源不同原创 2016-07-07 11:11:35 · 1079 阅读 · 0 评论 -
IO模型(同步,异步,阻塞,非阻塞)
在文章中一共比较了五种IO Model: blocking IO 阻塞IO nonblocking IO 非阻塞IO IO multiplexing IO复用 signal driven IO 信号驱动式 asynchronous IO 异步IO由于信号驱动式在实际中并不常用,所以我这只提及剩下的四种IO Model。这个问题在不同的背景之下讨论的结果不一致,本文讨论的背景是Linux环境下的n原创 2016-06-20 21:11:32 · 485 阅读 · 0 评论 -
C/C++中数组名退化为指针的情况
指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们在C语言的教学过程中也错误得给学生讲解:"数组名就是指针"。很幸运,我的大学老师就是其中之一。时至今日,我日复一日地进行着C/C++项目的开发,而身边还一直充满这样的程序员,他们保留着"数组名就是指针"的误解。想必这种误解的根源在于国内某著原创 2016-07-22 15:49:10 · 2955 阅读 · 4 评论 -
使用RAII来管理对象资源
RAII(资源获取即初始化)基本技术原理很简单,如果希望保持对某个重要资源的跟踪,那么创建一个对象,并将资源的生命期和对象的生命期相关联。这样的话,就可以利用c++复杂老练的对象管理机制来管理资源。最简单的形式是,当你构造一个对象的时候,其构造对象会获得一份资源,而析构函数则释放这份资源。采用对象管理资源,即使碰到意外的return、异常(C++保证如果抛出了异常,局部对象就会被销毁)甚至是邪恶的原创 2016-06-09 22:41:23 · 1190 阅读 · 0 评论 -
关于近期面试的一些总结
微信面试腾讯面试阿里高德地图面试360面试百度面试原创 2016-04-18 21:25:51 · 2427 阅读 · 0 评论 -
static作用(修饰函数、局部变量、全局变量)
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; // global variable转载 2016-04-11 19:47:43 · 301 阅读 · 0 评论 -
buffer overflow detected错误
最近在写并行程序的时候遇到这个问题,在上网查询之后发现好多是由于sprintf的缓冲区不够造成的,对比自己程序发现一个很低级的错误char *sc = new char(100);sprintf(sc, "%d", rank);string temp = sc;string str = "./read_time/read_time" + temp;ofstream fread_time原创 2016-05-24 13:22:45 · 9411 阅读 · 0 评论 -
今天是最幸福的一天
同时受到百度和腾讯的offer,开心只要努力就会有收获,加油原创 2016-09-27 22:35:19 · 571 阅读 · 0 评论