C++
文章平均质量分 75
lx_shudong
这个作者很懒,什么都没留下…
展开
-
C++利用string和vector分解字符串
void split(const string& src, const string& separator, vector& dest) {if (src.empty()) {return;}string str = src;string substring;string::size_type start = 0, index;do {index = s转载 2015-05-12 22:50:28 · 506 阅读 · 0 评论 -
模板的声明和实现为何要放在头文件中?
http://www.cnblogs.com/wanyao/archive/2011/06/29/2093588.html源: http://blog.csdn.net/lqk1985/archive/2008/10/24/3136364.aspx如何组织编写模板程序 发表日期: 1/21/2003 12:28:58 PM 发表人: Nemanja Trifun转载 2015-05-15 23:09:27 · 378 阅读 · 0 评论 -
c++空类实例大小不是0原因
初学者在学习面向对象的程序设计语言时,或多或少的都些疑问,我们写的代码与最终生编译成的代码却 大相径庭,我们并不知道编译器在后台做了什么工作.这些都是由于我们仅停留在语言层的原因,所谓语言层就是教会我们一些基本的语法法则,但不会告诉我们为什么这么做?今天和大家谈的一点感悟就是我在学习编程过程中的一点经验,是编译器这方面的一个具体功能.首先:我们要知道什么是类的实例化,所谓类的实例化就是转载 2015-05-14 20:47:55 · 358 阅读 · 0 评论 -
const char* & NOT char* const &
原文:http://blog.csdn.net/ftofficer/article/details/261193今天在BBS VC版上看到有个同学这么一个帖子,说VC在编译模板时有BUG,他贴的测试代码如下:// TemplateBug.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" // 先定义一个接口 temp转载 2015-06-18 15:46:35 · 311 阅读 · 0 评论 -
[译]const T vs. T const ——Dan Saks 【翻译】
http://m.blog.csdn.net/blog/bianbian17556231/5398039写程序的过程中遇到了const的用法,上网搜了点资料,都说Dan Saks的这篇文章讲的比较全面,就打算好好看看,可惜是英文的,因此决定自己来翻译一遍,为了更好地理解const的同时也能复习一下英语。原文可以参见:http://blog.csdn.net/bianbian17转载 2015-05-19 08:59:10 · 455 阅读 · 1 评论 -
HTTP请求、响应报文格式
HTTP请求报文格式:HTTP请求报文主要由请求行、请求头部、空行以及请求正文4部分组成1,请求行由3部分组成,分别为:请求方式,URI(注意这里不是URL)以及协议版本组成,之间由空格分隔请求方法主要包括GET、POST等;常见的协议版本有HTTP/1.12,请求头部包含很多有关客户端环境以及请求正文的有用信息请求头部由“关键字/值”对组成,每行一对,关键字和值之转载 2015-06-12 18:06:31 · 589 阅读 · 0 评论 -
http协议包:请求包和应答包
1 HTTP请求包 HTTP请求包(GET、POST等请求方法)由三个部分构成,分别是:方法-URI-协议/版本,请求头,请求正文。下面是一个HTTP请求包(GET)的例子: Socket socket = new Socket("127.0.0.1", 8080); OutputStream os = socket.getOutputStream转载 2015-06-12 18:07:34 · 1619 阅读 · 0 评论 -
Linux动态链接库的使用
http://www.cnblogs.com/Anker/p/3527677.htmlLinux动态链接库的使用1、前言 在实际开发过程中,各个模块之间会涉及到一些通用的功能,比如读写文件,查找、排序。为了减少代码的冗余,提高代码的质量,可以将这些通用的部分提取出来,做出公共的模块库。通过动态链接库可以实现多个模块之间共享公共的函数。之前看《程序员的自转载 2015-08-13 09:42:55 · 231 阅读 · 0 评论 -
log4cplus 使用方法 配置
http://my.oschina.net/lovecxx/blog/185951目录[-]1. Log4cplus简介2. 安装方法2.1. linux2.2. win3. 主要类说明4. 基本使用4.1. 基本步骤4.2. 使用示例4.2.转载 2015-09-25 14:32:47 · 10026 阅读 · 4 评论 -
C++ JsonCpp 使用(完整代码下载)
前言JSON是一个轻量级的数据定义格式,比起XML易学易用,而扩展功能不比XML差多少,用之进行数据交换是一个很好的选择JSON的全称为:JavaScript Object Notation ,顾名思义,JSON是用于标记javascript对象的,详情参考http://www.json.org/。本文选择第三方库JsonCpp来解析json,JsonCpp是比较出名的c++解析库转载 2015-09-29 10:56:59 · 591 阅读 · 0 评论 -
C++成员变量、构造函数的初始化顺序
一、C++成员变量初始化1、普通的变量:一般不考虑啥效率的情况下 可以在构造函数中进行赋值。考虑一下效率的可以再构造函数的初始化列表中进行2、static 静态变量(本地化数据和代码范围):static变量属于类所有,而不属于类的对象,因此不管类被实例化了多少个对象,该变量都只有一个。在这种性质上理解,有点类似于全局变量的唯一性。函数体内static变量的作用范围时该函数体,不同于转载 2017-01-11 15:34:42 · 547 阅读 · 0 评论 -
C++析构函数必须要用virtual修饰的原因
先举例:#include using namespace std;class Father{public: int m_fMember; Father(){m_fMember=1;} ~Father(){cout};class Child : public Father{public: int m_cMember;转载 2017-01-11 15:41:18 · 1915 阅读 · 0 评论 -
typedef和define的作用域
typedef和define的作用域 typedef:如果放在所有函数之外,它的作用域就是从它定义开始直到文件尾;如果放在某个函数内,定义域就是从定义开始直到该函数结尾;#define:不管是在某个函数内,还是在所有函数之外,作用域都是从定义开始直到整个文件结尾。如:typedef …//此处开始到文件结尾#define转载 2017-01-11 15:46:05 · 1188 阅读 · 0 评论 -
Linux下多个进程或线程同时对一个文件进行写操作
Linux下多个进程或线程同时对一个文件进行写操作 Linux下多个进程或线程同时对一个文件进行写操作,如何解决冲突?使用flock(锁定文件或解除锁定),简单可行!先介绍一下flock函数吧头文件 #include定义函数 int flock(int fd,int operation);函数说明 flock()会依参数operation所指定的方式对参转载 2017-01-11 15:47:56 · 6501 阅读 · 0 评论 -
c-ares DNS域名异步解析成IP
//build1: g++ dns_parse_cares.cc /usr/local/lib/libcares.a -lrt -o test //build2: g++ dns_parse_cares.cc -lcares -lrt -o test#include #include #include #include #include #include #include原创 2017-05-23 12:56:17 · 3954 阅读 · 0 评论 -
std::string用法总结
在平常工作中经常用到了string类,本人记忆了不好用到了的时候经常要去查询。在网上摘抄一下总结一下,为以后的查询方便:string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化string类的字符操作:const char &operator[](int n)...转载 2018-07-11 15:51:47 · 777 阅读 · 0 评论 -
for循环中i++与++i的效率探究
http://blog.csdn.net/zy1691/article/details/4849808or(int i=0;i 我们经常会使用这样的代码来做循环,一般在for循环中习惯于使用i++,却很少使用++i。虽然从代码执行的效果来看,它们并无任何区别,但是它们所生成的代码是有有所不同的。 i++ :先引用后增加++i :先增加转载 2015-05-15 23:04:41 · 420 阅读 · 0 评论 -
Linux共享内存使用常见陷阱与分析
http://os.51cto.com/art/201311/418977.htm所谓共享内存就是使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。其他进程能把同一段共享内存段“连接到”他们自己的地址空间里去。本文详细分析了常见的Linux共享内存陷阱,希望转载 2015-05-15 23:00:27 · 613 阅读 · 0 评论 -
c++ 命名空间
1 命名空间介绍使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突。下面是一个简单的命名空间的例子:[cpp] view plaincopyprint?namespace MyNames { int iVal1 = 100; int iVal2 = 200; } 这里有两个整型变量iVal1转载 2015-05-15 22:51:54 · 346 阅读 · 0 评论 -
gcc的内建函数__builtin_expect
1.问题引出在内核代码的条件分支中的判断中,经常可以看到如下两条语句:[cpp] view plaincopy/* ...... */ if(unlikely(!something)) /* ...... */ if(likely(something)) /* ...... */ 追述一下可以转载 2015-05-15 22:48:04 · 344 阅读 · 0 评论 -
C程序中对时间的处理——time库函数详解
http://blog.csdn.net/jack237/article/details/7344694包含文件: 一、在C语言中有time_t, tm, timeval等几种类型的时间1、time_ttime_t实际上是长整数类型,定义为:typedef long time_t; /* time value */ 2转载 2015-05-15 22:57:12 · 361 阅读 · 0 评论 -
模板,虚函数,内联函数
什么是内联函数? inline的原理:代码替代。在程序编译时,编译器将程序中出现的内联函数的调用表达式用内联函数的函数体来进行替代。当成员函数体写在类的声明内且无循环语句与switch语句时为内联函数,其余为非内联函数。C++函数中那些不可以被声明为虚函数常见的不不能声明为虚函数的有:普通函数(非成员函数);静态成员函数;内联成员函数;构造函数;友元函数。1.为什么转载 2015-05-15 22:46:13 · 541 阅读 · 0 评论 -
C++对象的内存分析
http://www.cnblogs.com/Binhua-Liu/archive/2010/06/16/1759019.html 介绍 虚函数表、虚指针、多态、重写(override)、虚析构、指针调整… 这些概念大家应该都不陌生,不过,除了了解概念和用法,你了解他们背后的实现的机制吗。 本文通过的C++类的对象内存进行分析,来讲解这些面向对象的特性是怎么实转载 2015-05-15 23:07:22 · 382 阅读 · 0 评论 -
C语言函数手册
http://c.biancheng.net/cpp/u/hanshu/转载 2015-05-15 23:14:30 · 467 阅读 · 0 评论 -
__thread关键字
原文:http://blog.csdn.net/liuxuejiang158blog/article/details/14100897 __thread是GCC内置的线程局部存储设施,存取效率可以和全局变量相比。__thread变量每一个线程有一份独立实体,各个线程的值互不干扰。可以用来修饰那些带有全局性且值可能变,但是又不值得用全局变量保护的变量。 __转载 2015-05-15 22:42:39 · 340 阅读 · 0 评论 -
深入理解C++中的mutable关键字
mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。 在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。 我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数里面转载 2015-05-15 22:50:11 · 519 阅读 · 0 评论 -
C++的多态如何在编译和运行期实现
http://blog.csdn.net/russell_tao/article/details/7167929多态是什么?简单来说,就是某段程序调用了一个API接口,但是这个API有许多种实现,根据上下文的不同,调用这段API的程序,会调用该API的不同实现。今天我们只关注继承关系下的多态。还是得通过一个例子来看看C++是怎样在编译期和运行期来实现多态的。转载 2015-05-15 23:11:25 · 389 阅读 · 0 评论 -
C++ STL中Map的按Key排序和按Value排序
http://blog.csdn.net/iicy266/article/details/11906189 map是用来存放键值对的数据结构,可以很方便快速的根据key查到相应的value。假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区分),我们用map来进行存储就是个不错的选择。 我们这样定义,map,其中学生姓名用string类型,作为Key;该学生的成转载 2015-05-15 22:59:39 · 252 阅读 · 0 评论 -
C 语言项目中.h文件和.c文件的关系
http://blog.csdn.net/liangwei88624/article/details/6284661 在编译器只认识.c(.cpp))文件,而不知道.h是何物的年代,那时的人们写了很多的.c(.cpp)文件,渐渐地,人们发现在很多.c(.cpp)文件中的声明语句就是相同的,但他们却不得不一个字一个字地重复地将这些内容敲入每个.c(.cpp)文件。但更为恐怖的是转载 2015-05-15 23:10:17 · 2708 阅读 · 0 评论 -
linux c学习笔记----共享内存(shmget,shmat,shmdt,shmctl)
http://lobert.iteye.com/blog/1746041shmgetint shmget(key_t key, size_t size, int flag);key: 标识符的规则size:共享存储段的字节数flag:读写的权限返回值:成功返回共享存储的id,失败返回-1key_t key---------------------转载 2015-05-15 23:13:03 · 5052 阅读 · 0 评论 -
assert()函数用法总结
http://www.cnblogs.com/ggzss/archive/2011/08/18/2145017.htmlassert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include assert.h>void assert( int expression ); assert的作用是现计算表达式 express转载 2015-05-15 22:44:12 · 243 阅读 · 0 评论 -
非类型模板形参取数组的维数
http://www.cppblog.com/Tim/archive/2012/11/09/194965.html 我们知道,用模板的时候可以为他提供两种类型的模板形参:一种是类型模板形参,一种是非类型模板形参。例如如下声明:templateclass T>void foo(T t); //用的类型模板形参templateclass T,int n>void fo转载 2015-05-15 22:54:34 · 267 阅读 · 0 评论 -
嵌套类与局部类
原文:http://www.cnblogs.com/charley_yang/archive/2011/04/05/2005897.html一、嵌套类 在一个类的内部定义另一个类,我们称之为嵌套类(nested class),或者嵌套类型。之所以引入这样一个嵌套类,往往是因为外围类需要使用嵌套类对象作为底层实现,并且该嵌套类只用于外围类的实现,且同时可以对转载 2015-05-15 22:40:05 · 357 阅读 · 0 评论 -
linux下syscall函数,SYS_gettid,SYS_tgkill
原文:http://blog.chinaunix.net/uid-28458801-id-4630215.htmlNAME syscall - 间接系统调用SYNOPSIS #define _GNU_SOURCE #include #include转载 2015-05-15 22:37:32 · 3774 阅读 · 0 评论 -
OpenCV3.3+VS2013 环境配置
操作环境: Windows7_x64 + Visual Studio 2013 (亲测Win10系统和VS2015也是可以的)编译配置工具: CMake(利用CMake对OpenCV源码进行编译生成VS的64位解决方案)第一步:下载并安装CMake 直接登录CMake官网下载Windows64位安装包 链接:ht...转载 2018-08-10 10:41:37 · 788 阅读 · 0 评论