c/c++
aalbertini
这个作者很懒,什么都没留下…
展开
-
string 与 c style 字符串的效率测试
无意中看见c++ string与 c char字符串效率的一些争论。因而就工作中常用到的语句, 自己写了一些比较公平的测试代码, 基本可以看出string 比 c style字符串高效很多。 #include #include #include using namespace std; int main() { unsigned int s原创 2009-08-25 12:02:00 · 720 阅读 · 0 评论 -
龟兔赛跑
<br />龟兔赛跑。 龟跑了N, 兔跑了M; M > N; 且兔子从未落后过。<br /> <br />问有多少种可能?<br /> <br />总共有c(m+n, m), 需要减去兔子落后的,假设为X。<br /> <br />M<br />|<br />|<br />|<br />| /<br />| /<br />| /<br />| /<br />|————— N<br /> <br /> <br /> <br /> <br />X <br />a原创 2010-11-18 19:25:00 · 533 阅读 · 0 评论 -
iterator
<br />1<br />ostream_iterator<type>(stream_object, "seperator"), 配合诸多算法使用。 type是指插入到stream_object的对象类型。<br /> <br />例如<br />vector<string> vs;<br />vs.push_back(), <br />vs.push_back(), <br />vs.push_back(), <br />vs.push_back()<br /> <br />copy(vs.begin()原创 2011-02-15 16:15:00 · 617 阅读 · 1 评论 -
vector notes
<br />struct _Vector_base<br />{<br />public:<br /> _Vector_impl _M_impl;<br />};<br /> <br />struct _Vector_impl : public _Tp_alloc_type _Vector_impl类时从alloc继承的<br /> <br />class vector : protected _Vector_base<_Tp, _Alloc> vector从base类继承。<原创 2011-03-11 14:37:00 · 655 阅读 · 0 评论 -
trie 树
<br />trie树找出一堆字符串的前缀机器重复次数。 <br /> <br />重点在insert, travel_node, 析构函数<br /> <br />class EmailNameChar{//a-z A-Z 0-9 . - _ 为用户名字符//0-9, 用0-9表示//a-z, A-Z用10-35表示, 不区分大小写//.36 -37 _38 char _c;public: EmailNameChar() { _c = 39; }原创 2011-04-07 11:02:00 · 661 阅读 · 0 评论 -
errno 多线程安全
定义编译宏-D_LIBC_REENTRANT -D _REENTRANT 调试宏-ggdb3 -原创 2011-09-16 15:45:01 · 746 阅读 · 0 评论 -
warning: implicit declaration of function导致core
centos上使用gcc编译某程序得到warning:implicit declaration of function同时写了一个测试程序用到c++库, 因此使用g++编译。测试程序无问题。 原程序使用gcc编译得到warning没在意, 使原创 2011-09-16 15:44:13 · 196 阅读 · 0 评论 -
二级hash。。?
二级hash一级hash函数是固定的。每个槽有自己的二级hash函数。 且 二级hash长度是该槽内相同element个数的平方。 这样能保证二级hash无碰撞发生。一级hash中, 某个槽内有n个元素, 对应的二级hash长度为m=n^2;这n个元素在该二级hash中的碰撞的pair有 C(n,2); 出现碰撞的概率为1/m因此, 碰撞次数的期望就是原创 2012-04-24 16:57:37 · 2017 阅读 · 0 评论 -
lua c/c++ 交互 基础
来源于http://wenku.baidu.com/view/53e0b503763231126edb113c.html按照示例代码测试了一下可行。function.lua如下:function add(a, b) local sum = a + b return sumendz = 12b = 15avg,sum = average(10,20,原创 2013-09-03 17:22:45 · 753 阅读 · 0 评论 -
整理的几个面试题目
整理了几个面试题, 可能会用到; 有几个难度应该算是比较大;对于没工作经验、没实际经验的本科、研究生,不容易想清楚, 更不容易写好。一堆球中有1个球较轻;求y次天平比较,才能找出 这堆球[总数x]中较轻的那个球。 求y与x的关系。x = 3^^y3个球, 1次比较就能知道; 两端各1个, 平衡则第三个较轻; 不平衡则上浮的那端较轻;9个球, 2次比较就能知道原创 2013-10-29 17:32:42 · 913 阅读 · 0 评论 -
hashmap::begin() 坑
因业务需要, 使用stl中的list+hashmap实现了一个容器, 支持O(1原创 2014-08-26 10:48:03 · 1181 阅读 · 0 评论 -
cocos2dx v3.0 主循环
int Application::run(){ // Initialize instance and cocos2d. if (! applicationDidFinishLaunching()) { return 0; } long lastTime = 0L; long curTime = 0L; auto dire原创 2014-11-26 00:29:53 · 1724 阅读 · 1 评论 -
GDB调试手册
from http://www.programlife.net/gdb-manual.htmlLinux 包含了一个叫gdb 的GNU 调试程序。gdb 是一个用来调试C和C++程序的强力调试器。它使你能在程序运行时观察程序的内部结构和内存的使用情况。以下是 gdb 所提供的一些功能:它使你能监视你程序中变量的值、它使你能设置断点以使程序在指定的代码行上停止执行、它使你能一行行的执转载 2014-12-17 19:47:01 · 743 阅读 · 1 评论 -
boost asio 性能与线程安全性
http://stackoverflow.com/questions/12794107/why-do-i-need-strand-per-connection-when-using-boostasio/12801042http://www.boost.org/doc/libs/1_51_0/doc/html/boost_asio/overview/core/strands.html原创 2014-12-03 13:23:21 · 7618 阅读 · 5 评论 -
cent os 下使用hashmap + string
<br />hash_map定义在__gnu_cxx名字空间下原型是:template<class _Key, class _Tp, class _HashFcn = hash<_Key>, class _EqualKey = equal_to<_Key>, class _Alloc = allocator<_Tp> > class hash_map;使用hash_map + Keytype: 需要自定义 _HashFcn, _EqualKey如果只提供原创 2010-08-13 10:45:00 · 720 阅读 · 0 评论 -
寻找二叉树中两个节点的最近祖先
#include #include #include using namespace std;class Node{public: int c; Node *left, *right; Node(): c(0), left(0), right(0) {} Node(int i, Node *l, Node *r): c(i), left(l), right(r) {}};class WrapNode{public原创 2010-08-12 17:57:00 · 1028 阅读 · 3 评论 -
寻找两个单链表的第一个公共节点
<br />class List{public: int v; List *next; List():v(0), next(0){}};List * find_first_cross(List *h1, List *h2){ if(!h1 || !h2) return 0; int len1 = 0, len2 = 0; List *p = h1; while(p) {原创 2010-08-12 12:15:00 · 1086 阅读 · 0 评论 -
判断栈的增长
其实就是在函数中记录自动变量的地址; 递归再次调用函数重复入栈再次记录其地址, 比较两次地址, 就可以知道栈帧增长的方向,自然就知道了栈增长的方向 #includestatic void find_stack_direction(void);static int stack_dir;int main(void){ find_stack_direction();原创 2009-10-22 18:32:00 · 589 阅读 · 0 评论 -
lua 的编译和使用
1 下载lua; 到lua目录下执行 etc/luavs.bat 即可 2 vs中2.1 general指定头文件依赖目录2.2 input目录输入依赖的lib名 lua51.lib2.3 指定lib的目录2.4 代码中包含lua.h等头文件时需要 extern c... #include "stdafx.h"extern "C"{#incl原创 2010-01-07 16:28:00 · 732 阅读 · 0 评论 -
lua 应用
http://blog.csdn.net/gogo0304/relatedarticles/253740.aspx原创 2010-01-07 17:01:00 · 514 阅读 · 0 评论 -
bug list---直接访问string内存
1) 貌似写过如下代码string s(xx);char * p = s.c_str();for( ; *p; p++){ if(*p == xxxxx) break;} string的内存未必是连续分配啊 两种解决这个问题的方式std::string result(s); size_t i; for (原创 2010-04-20 16:24:00 · 615 阅读 · 1 评论 -
大小写转换
他大爷的, 前2天写了一个函数, 回过头发现一堆问题。。 函数的功能是将一个串中的大写字母转为小写, 串可能包含GBK字符。GBK是用2个字节表示一个汉字,其中第一个字节大于0x80 char * lower(const char *src, char *dst){ if(src == 0) return 0; unsigned char原创 2010-04-30 15:17:00 · 723 阅读 · 0 评论 -
建堆的复杂度与过程
唉, 一直以为建堆的过程是这样的: 1 个元素是一个堆2 个元素时, 交换元素2与堆顶, 调整3 个元素时, 交换元素3与堆顶, 调整4 个元素时, 交换元素4与堆顶, 调整。。。。一直到数组末尾, 于是整个数组就成为一个堆了。 这样操作的复杂度是nlogn. 怎么与一般书上说的建堆的复杂度O(n)不一样呢? 原来复杂度O(n)的建堆过程是这样原创 2010-05-10 18:28:00 · 5706 阅读 · 2 评论 -
extern "C" 的作用
有些朦朦胧胧 特上网搜了一下 extern "C"是告诉C++编译器以C Linkage方式编译,也就是抑制C++的name mangling机制。原创 2010-05-10 19:37:00 · 494 阅读 · 0 评论 -
阿里面试题解答
1 澳大利亚父母喜欢女孩, 所以一直要生到有一个女孩为止。 问多年后男女孩的比率。 解答: 生男孩的期望为e,e = 1 * 1/4 + 2 * 1/8 + 3 * 1/16 + ... n * 1/2^(n+1) = 1. 因此男女孩的期望比就是1:1, 男女孩的比率也是1:1 2 3:15时, 钟的分针与时针的角度多大。分针的角度是360/(原创 2010-05-10 18:45:00 · 1116 阅读 · 1 评论 -
建堆的算法实现
数组起始元素下标为0, 长度为n。 建立最小堆 算法实现比较丑, 好像比一般的实现多了一些比较操作, 具体在heapdown函数中, 判断是否数组越界? void buildheap(int a[], int n){ for(int i = (n-1)/2; i >= 0; i--) { heapdown(a, n, i);原创 2010-05-10 18:57:00 · 3272 阅读 · 1 评论 -
vtbl 什么时候被改写
当父类有虚汗数, 子类继承; 定义子类对象, 可以清楚的看到vtbl中的vptl是在子类构造函数调用之前被改写的. winxp + vs.net2005 代码如下:class A{public: A() { print(); } virtual void print() { cout <<"in A" << endl; }};原创 2010-05-10 19:23:00 · 661 阅读 · 0 评论 -
WINDOWS 下编译ace
<br />windows<br />解压ace在c盘,我的路径是:<br />C:/ACE_wrappers<br />然后设置系统路径:<br />添加系统的环境变量,path 的最前面加入C:/ACE_wrappers/lib<br />添加vc的库文件路径:<br />C:/ACE_wrappers/lib<br />添加vc的头文件也就是包含文件的路径:<br />C:/ACE_wrappers<br /><br />在C:/ACE_wrappers/ace目录创建一个名为 config.h的文件原创 2010-07-29 17:41:00 · 1499 阅读 · 0 评论 -
merge sort && loser tree
<br />#ifndef __LoserTree__H#define __LoserTree__H#include <iostream>#include <fstream>#include <vector>#include <iterator>#include <algorithm>using namespace std;/** V, 数据类* P, 数据大小判定类,用于数据对象的比较与排序* F, File Stream类,如SortedFil原创 2010-08-03 17:51:00 · 1830 阅读 · 0 评论 -
a singleton implemention
<br />这样可行是因为以下几点:<br />1 内部类可以直接访问外部类的静态成员、typedef、枚举值<br />2 Cleanup对象可能在多线程环境下重复构造初始化, 但无关紧要<br />#ifndef _CRS_SINGLETON_H_#define _CRS_SINGLETON_H_template<class _Type> class Singleton{public: static _Type *get_instance();protected: fri原创 2010-08-10 16:30:00 · 704 阅读 · 0 评论 -
go 的des加解密
go 的crypto/des里面只有cbc模式的如果使用ecb模式的, 需要自己写。代码如下// PKCS5Padding funcfunc PKCS5Padding(ciphertext []byte, blockSize int) []byte { padding := blockSize - len(ciphertext)%blockSize //padtext := bytes.Repea...原创 2018-03-09 09:40:49 · 1131 阅读 · 0 评论