随笔分类 - C++
C++终于熟了
摘要:我们发现PyQt做的Python版的PyQt是如此好用,如果想把自己的C++库包装成Python模块该如何实现呢? 这里介绍下用SIP包装C++库时值得参考的功能实现: 需要Python模块中实现C++的多态指针类型自动转型为实际类型: 例如:AbstractItem *getItem(); // 这里返回值可能是任何一个子类对象指针,但是在SIP包装后,始终返回AbstractItem对象,...
阅读全文
摘要:在链接Qt的库,比如QtGui4.lib,我这里是在链接QtSolutions_PropertyBrowser-head.lib的时候出现的链接错误。大概是说一个“XXXX::staticMetaObject”的函数找不到定义。解决办法是,在include该Qt库的头文件时定义“__declspec(dllimport)”,对于QtSolutions_PropertyBrowser-h...
阅读全文
摘要:在安装traits的时候,发现居然出错了。后来发现安装版的Python 2.7搜索的是Visual Studio 2008,好吧,我电脑里2010和2012都有,真心不想再装个2008。so,先用2012工具链编译吧: 好吧,自己试用的时候这么玩玩就算了,实际产品中一定要用对应版本的编译器。
阅读全文
摘要:最近有个这样的需求,就是在不能获取dll源码情况下来检测该dll的内存泄漏。并且该dll是release下的版本,链接了release版的CRT。由于不能获取源码,就不能重新编译,比较好的解决方案就是hook api。寻思这事儿肯定有人干过,搜了一下在code project上真有。收藏一下: http://www.codeproject.com/Articles/150463/Le...
阅读全文
摘要:看到一篇lock-free数据结构的文章,写的不错,最原始的出处是IBM Developer Works,这里转载的看着更顺眼些:http://gamebabyrocksun.blog.163.com/blog/static/57153463201291654858247/
阅读全文
摘要:主要用在Managed C++做Native C++ Wrapper时, void foo(Bar^% x); => void foo(ref Bar x); using namespace System::Runtime::InteropServices; void foo([Out] Bar^% x); => void foo(out Bar x);
阅读全文
摘要:看MongoDB源码,发现里面有用这种诡异智能指针的,以前没见过,学习了。原文地址
阅读全文
摘要:做过不少题,比较系统的有LeetCode系列、POJ系列、Interview Street Challenges系列。自己总结的有简明排序代码、八皇后N解、逆序数相关题等。其他题还比较散,等十月份面试高峰期过了就系统的总结总结。
阅读全文
摘要:1, The Triangle (POJ 1163) 2, Function Run Fun (POJ 1579) 3, Recaman's Sequence (POJ 2081) 4, World Cup Noise (POJ 1953) 5, Strange Towers of Hanoi (POJ 1958) 6, Common Subsequence (POJ 1458) 7,...
阅读全文
摘要:LeetCode: http://www.leetcode.com/onlinejudge, Note: (Added 9/18/2012)3Sum3Sum Closest4SumAdd BinaryAdd Two NumbersAnagramsBalanced Binary TreeBinary Tree Inorder TraversalBinary Tree Level Order TraversalBinary Tree Level Order Traversal IIBinary Tree Zigzag Level Order TraversalClimbing StairsComb
阅读全文
摘要:还是把矩阵中值为0的点的行列都置零,上次是开辟了额外空间,这次要求O(1)的空间复杂度。 void setZeroes(vector<vector<int> > &matrix) { bool bColZero = false, bRowZero = false; if (matrix.size() == 0 || ...
阅读全文
摘要:又见翻转链表,这回是给定接口的递归和非递归翻。比之前那篇反转链表多了接口限制。 #include <iostream> using namespace std; typedef struct node LinkNode; struct node { int data; LinkNode *next...
阅读全文
摘要:‘?’匹配任意单个字符,‘*’匹配任意字符序列(包括空字符序列)。如果匹配整个串返回true。 例: isMatch("aa","a") → falseisMatch("aa","aa") → trueisMatch("aaa","aa") → falseisMatch("aa", "*") → trueisMatch("aa", "a*") → trueisMatch("ab"
阅读全文
摘要:‘.’匹配任意单个字符,‘*’匹配0个或多个前一字符。如果匹配整个串返回true。 例: isMatch("aa","a") → falseisMatch("aa","aa") → trueisMatch("aaa","aa") → falseisMatch("aa", "a*") → trueisMatch("aa", ".*") → trueisMatch("ab", &q
阅读全文
摘要:XX公司的一道笔试题,煤矿有3000吨煤要拿到市场上卖,有一辆火车可以用来运煤,火车最多能装1000吨煤,且火车本身需要烧煤做动力,每走1公里消耗1吨煤,如何运煤才能使得运到市场的煤最多,最多是多少? 最优解: 1,火车从煤矿出发3次,也即回来2次。(这样可以把3000吨都运出,回煤矿次数越多越费煤,所以最少需要回2次) 2,火车每次回煤矿要是空车。(如果不是空车,回煤矿两次显然...
阅读全文
摘要:主要包括全排列和回溯两类,其中全排列可以递归与非递归,回溯也可以递归与非递归。于是加一起有4种解法。 #include <iostream> #include <algorithm> using namespace std; template <size_t N> struct ArraySizeHelper {char _[N];}...
阅读全文
摘要:实现一个高效的不可变队列,队列有enqueue和dequeue,分别从队列push、pop一个元素,并返回新队列。原有队列保持不变。 template<typename T> class const_queue { public: const_queue() : m_nFrontIdx(0), m...
阅读全文
摘要:题意是要求在01矩阵中,把0的点的行和列都置零。 #include <iostream> #include <vector> #include <utility> using namespace std; void unguarded_setZero(int *matrix, int m, int n, int i, int j...
阅读全文
摘要:字符串乘法,有两个字符串表示的正数a、b,求乘积c,也用字符串表示。涉及字符串乘法、字符串加法。 class Solution { private: char mul(char a, char b, char &carry) { int val = (a - '0') * (b - '0') + (carry...
阅读全文
摘要:就是合并两个有序链表了,递归解妥妥儿的。 ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) { if (l1 == NULL) return l2; if (l2 == NULL) return l1; ListNode *ret = NULL; ...
阅读全文