
C++
文章平均质量分 55
春文秋武
路延续着崎岖,静静地走着
展开
-
C++动态创建二维数组和清空cin缓冲
通用函数如下,直接复制过去调用即可:创建void new2Arr(int **&arr,int rows, int cols){arr=new int*[rows];for(int i=0;i{arr[i]=new int[cols];}}删除,防止内存泄漏void del2Arr(int **&arr,int rows){for原创 2010-05-24 00:29:00 · 2700 阅读 · 0 评论 -
MySQL++简介
Mysql++是官方发布的、一个为MySQL设计的C++语言的API。Mysql++为Mysql的C-Api的再次封装,它用STL(Standard Template Language)开发并编写,并为C++开发者提供像操作STL容器一样方便的操作数据库的一套机制。其官方API介绍:MySQL++ Reference Manual与JDBC一样,先建立连接Connection,创建Query,原创 2012-07-18 09:51:09 · 17920 阅读 · 5 评论 -
boost锁介绍
boost thread库提供了三种级别的锁:boost::shared_lock(读锁),boost::upgrade_lock(和读锁不互斥,与写锁、upgrade_loc互斥),boost::unique_loc(写锁)五种互斥变量:mutex:独占式互斥量shared_mutex: 读共享/写互斥的共享互斥量recursive_mutex: 递归互斥量timed_m原创 2013-04-27 16:59:58 · 1409 阅读 · 0 评论 -
c++编译相关
1. LD_LIBRARY_PATHlinux的环境变量,用于指明除默认路径外的查找共享库(so,动态链接库)的路径。该路径在默认路径前查找。export LD_LIBRARY_PATH=$ICE_HOME/lib:.:$HOME/lib当运行目标程序报如下错误时,就可以考虑使用LD_LIBRARY_PATH指出共享库的路径error while loading sha原创 2012-12-06 10:35:49 · 903 阅读 · 0 评论 -
FastCGI介绍
CGI(Common Gateway Interface)公共网关接口,是HTTP服务器与其他程序通信的工具。FastCGI是一个long-live型的CGI,支持分布式计算,它将CGI解释器进程保持在内存中并因此获得较高的性能。FastCGI工作方式是接受Web服务器的请求,以HTTP Request的方式进行响应,实现了应用程序与Web服务器的分离。它的使用需要在Web服务器中安装支持组件原创 2013-06-06 17:31:42 · 7543 阅读 · 0 评论 -
动态链接库的使用
动态链接库(.so)可以让程序在运行时被加载,当so修改时,使用程序不需要重新编译就可以使用。本文介绍几个函数,讲述so的加载和方法调用。void * dlopen( const char * pathname, int mode);以指定模式打开某动态链接库文件,返回句柄。模式有:RTLD_LAZY, RTLD_NOW; RTLD_GLOBAL, RTLD_LOACAL;RTLD_NOD原创 2013-09-06 17:46:43 · 1020 阅读 · 0 评论 -
c++日期和时间相关操作-<time.h>(ctime)
time.h(ctime)是c time library,定义了获取和操作日期和时间的函数。1. 结构typedef long time_t;time_t是长整型,表示的是距(1970年,1月1日00:00:00)的秒数,常常通过time函数获得。struct tm {int tm_sec; //秒 0-59(一般)int tm_min; //分 0-59int tm原创 2013-01-04 11:48:40 · 16467 阅读 · 0 评论 -
C++类型转换
一直觉得没写的必要,但还是记一下吧。太书面化记不住,就简单些下。类型转换分为隐式类型转换和强制类型转换。隐式类型转换是编译器自动执行,无需程序员介入。如下://算术转换double b = 5 + 3;//条件表达式int val = 0;if (val)......强制转换就是要在代码中写明的转换,具有危险性。C风格是:(type) xx;C++提供了四种转换原创 2014-01-15 16:08:01 · 760 阅读 · 0 评论 -
mysql C API的使用
《MySQL++简介》介绍了如何使用C++来访问mysql,本文记录下使用C API访问mysql,mysql++就是对本文介绍的C-API的封装。常用函数(名字就能告诉我们用法):MYSQL * mysql_init(MYSQL *mysql)int mysql_options(MYSQL *mysql,enum mysql_option option, c原创 2013-07-09 16:29:27 · 1393 阅读 · 0 评论 -
boost常用记录
1.BOOST_FOREACH经常会遍历容器,写for/while循环到shou原创 2014-05-12 10:21:08 · 1094 阅读 · 0 评论 -
C/C++堆和栈介绍
一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变量和静态转载 2013-05-10 10:24:54 · 842 阅读 · 0 评论 -
gcc/g++分析
GCC(GNU Compiler Collection,GNU编译器集合),是一套由 GNU 开发的编程语言编译器。GCC原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,现在已可处理C、C++、 Fortran、Pascal、Objective-C、Java, 以及 Ada与其他语言。g++是针对GCC针对C++原创 2013-05-10 11:12:22 · 1067 阅读 · 0 评论 -
有意思的记录-C++(持续更新)
1.数组指针void main(){ int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d,%d",*(a+1),*(ptr-1));}输出结果为:2,5&a是数组指针,其类型为 int (*)[5];而指针加1要根据指针类型加上一定的值,不同类型的指针+1之后增加的大小不同。&a是长度为5的int原创 2011-09-11 15:47:32 · 939 阅读 · 0 评论 -
zk系列-c++下zookeeper使用实例
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务。分布式应用可以使用它来实现诸如:统一命名服务、配置管理、分布式锁服务、集群管理等功能。公司常用到的是Java服务集群的管理。1.函数介绍//create a handle to used communicate with zookeeperzhandle_t *zookeeper_init(const char *hos原创 2013-04-27 17:53:34 · 19091 阅读 · 7 评论 -
log4cplus使用
log4cplus is a simple to use C++ logging API providing thread-safe, flexible, and arbitrarily granular control over log management and configuration. It is modelled after the Java log4j API. 下载地址http:原创 2013-02-06 18:09:56 · 2039 阅读 · 0 评论 -
boost multi_index_container 基本介绍
Boost Multi-index Containers Library定义了multi_index_container模板类,可以从不同的维度建索引、排序和存取。如上图,容器multi_index_container分别从shape,number和sequenced(默认插入的顺序)三个维度对元素进行管理。使用如下:#include #include #include原创 2013-01-08 18:41:42 · 9683 阅读 · 3 评论 -
<cstdlib>下system函数的使用
int system(const char* command)调用系统命令执行command。如果command为空,返回处理器是否可用(0不可用)。使用例子#include //or #include system("dir");这提供了与系统交互的接口,方便我们使用shell命令。本人访问一个页面,本要使用curl,要设置很多参数,注意线程安全等,使用linux原创 2012-12-06 09:59:17 · 1351 阅读 · 0 评论 -
C++字符串处理
<br />1. string是类,不是数据类型。所有的string类都是以C-style字符串为基础的,C-style字符串是字符数组。<br />字符编码类型有:单字节字符集-SBCS;多字节字符集-MBCS,包括两种字符类型-单字节字符(SBCS)和双字节字符(DBCS);Unicode,所有字符都使用两个字节编码。<br />SBCS、DBCS编码的字符串都是用一个字节表示的0作为结束标志;Unicode用两个字节表示的0作为结束标志。<br />2. 通常使用的数据类型char,为单字节字符集。奇原创 2011-03-07 17:47:00 · 1241 阅读 · 0 评论 -
C++ STL概要介绍
STL(标准模板库)是C++的一个重要组成部分,类不多,但作用大。现转一篇《STL学习小结》来对STL有总体上的认识。提供了类型安全、高效而易用特性的STL无疑是最值得C++程序员骄傲的部分。每一个C++程序员都应该好好学习STL:). STL (Standard Template Library 标准模板库)是C++标准库的一个重要组成部分,它由Stepanov and Le转载 2011-06-03 09:51:00 · 920 阅读 · 0 评论 -
常见排序算法总结
排序算法很早就开始接触,但全部记住并瞬间写出来也是有点困难。排序算法更多的是给我们提供了一种思路。常见的有:归并排序、快速排序、堆排序,以及较为简单的冒泡排序、选择排序、插入排序、希尔排序等。近日回味,发现中国IT实验室的一个教程较为详细明了,现转载如下。但是其中的归并排序代码的合并部分有个小问题,读者自行发现。排序算法的复杂度及思想:补:二路归并排序的时间复杂度为O(nlogn),把原创 2011-06-03 20:57:00 · 738 阅读 · 0 评论 -
指针详解(转载提炼)
看到一网友转载的对C语言指针的解释,很详细。现简化提炼转载如下:第一章 指针的概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。1.指针类型从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。转载 2011-06-13 18:05:00 · 785 阅读 · 0 评论 -
vector(C++)讲解
使用需要的头文件:#include vector:不是一种数据类型。 vector是一种数据类型。vector容器是一个模板类,可以存放任何类型的对象(但必须是同一类对象)。vector对象可以在运行时高效地添加元素,并且vector中元素是连续存储的。一、 定义和初转载 2011-08-15 20:23:14 · 2980 阅读 · 0 评论 -
JSONCPP使用
Json是一种数据传输协议,规定了数据格式。{"key":"value","key1":"value1"}读取Json字符串(include Json::Value value; Json::Reader reader; Json::Value::iterator iter; Json::Value::Members members; bool parsingSuccessf原创 2012-07-31 11:01:22 · 3738 阅读 · 0 评论 -
利用宏自动产生Get/Set函数
C++中的宏,是将一个标识符定义为一个字符串。在源程序中,该标识符会被指定的字符串来代替。格式:#define (参数表) #define SG_M(TYPE, M)\public:\ void set_##M( const TYPE& in_##M ) {\ M##_ = in_##M;\ }\ TYPE M() {\ return M##_;\ }\p原创 2012-09-06 17:05:16 · 1550 阅读 · 0 评论 -
Ice中Monitor的使用
IceUtil::Monitor类namespace IceUtil {template class Monitor {public: void lock() const; void unlock() const; bool tryLock() const; void wait() const; bool timedWait(const Time&) const; v原创 2012-09-03 18:08:53 · 2869 阅读 · 0 评论 -
bind2nd使用
template binder2nd bind2nd (const Operation& op, const T& x);bind2nd是一个函数配接器,目的是将二元仿函数转换为一元仿函数,可以将第二参数传给第一参数(二元仿函数),作为二元仿函数的第二参数。常用于泛型算法中的谓词出现。使用1.#include struct GT : public binary_function {原创 2012-10-10 14:55:55 · 860 阅读 · 0 评论 -
boost中regex的使用
boost是对STL的补充,regex是其中一个模块。各方法类别很多,本文记录常用方法。引入头文件1. regex_match regex reg("\\d{3}"); string str = "123"; bool b = regex_match(str,reg);2.regex_replace(string s, regex e, string t),把s中匹配原创 2012-09-19 19:16:52 · 6420 阅读 · 0 评论 -
switch中局部变量的使用
直接上代码 switch (i) { case 0: int m=5; break; case 1: break; default: break; }编译通不过test8.cpp:20: 错误:跳转至 case 标号test8.cpp:18: 错误: 跳过 ‘int m’ 的初始化test8.cpp:22: 错原创 2012-09-26 14:27:31 · 4672 阅读 · 0 评论 -
curl请求页面
curl在linux下是一个传输数据工具,可以向服务端提交或获取数据。支持HTTP/HTTPS/FTP/FTPS/TFTP/DICT/TELNET/LDAP/FILE,提供代理、用户验证、ftp上传、SSL连接等功能。curl的传输功能都有libcurl具体实现。其具体命令行操作可以man curl,下面介绍使用libcurl请求url。#include bool GetHttpRes原创 2012-10-29 13:47:40 · 2288 阅读 · 0 评论 -
C++发送邮件-jwsmpt
jwSMTP是用于发送邮件的C++库,支持附件、多接收者,抄送等功能。下载地址jwSMTP.1.安装tar, ./configure配置安装路径,make, make install。2.使用#include jwsmtp::mailer mail_;mail_.setsender(from_);mail_.username(from_);mail_.password(pw原创 2012-12-07 10:01:05 · 1426 阅读 · 0 评论 -
redis源码系列-数据结构(adlist/ziplist/dict)
该系列基于redis-2.8.18,主要记录自己的理解或者想法。redis以自己支持存储的数据结构丰富吸引了大批人,把memcached比了下去。本文就从简单基本的数据结构入手。双向链表(adlist.h)typedef struct listNode { struct listNode *prev; struct listNode *next; void *val原创 2014-12-12 16:06:09 · 932 阅读 · 0 评论