![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 65
hp_truth
一个热爱技术的人
展开
-
c++ 指针和引用的区别
c++中指针和引用都是非常重要的概念,c语言中指针发原创 2014-10-21 17:16:18 · 631 阅读 · 0 评论 -
判断整数是奇数还是偶数
下面这个例子中使用了两种方法,一种是mod,一种是位运算。对于位运算的方法,比较好理解,但是对于mod的方法,如果使用不当,就容易得到错误的结果。#include using namespace std;int main(int argc, char* argv[]){ for(int i=-5; i<=5; ++i) { cout << "i: " << i <原创 2015-02-26 12:02:43 · 3710 阅读 · 0 评论 -
gettid 和 pthread_self 的区别
gettidgettid() is a system call. As for as I know there is no glibc wrapper for gettid. You need to invoke gettid() using syscall(). The following code works for me.#include pid_t gettid()原创 2015-01-05 16:39:31 · 11437 阅读 · 0 评论 -
算法,请不要这么经典 - 二叉树的可视化
围绕二叉树的算法实在是太多了,以前也总结过一些,但这次决定通过博客的方式,把自己的一些总结和大家分享一下。首先声明,代码中肯定会参考一些别人的代码,由于是陆陆续续总结的,所以没法给出参考的链接,在此谨表示感谢,如果觉得侵犯了版权,可以给我留言。由于二叉树相关的算法很多,所以我们将以专辑的方式讨论一下。在讨论具体算法之前,想想要是能把二叉树打印出来多好啊,看到很多博客上都有很多的图,看起原创 2015-03-23 17:01:59 · 3125 阅读 · 0 评论 -
c++ 智能指针- shared_ptr和weak_ptr
c++中智能指针的作用是非常大的,它不仅能解决很多裸指针带来的内存相关问题,还能用来管理资源(RAII)。c++中的智能指针有很多种,其中以shared_ptr和weak_ptr最为重要(个人观点),掌握了这两个智能指针的原理,其它的就很好理解了。shared_ptr是典型的引用计数型智能指针,相信很多c++程序员都写过功能类似的智能指针类。很多时候用这个指针就足够了。但是有些原创 2014-10-27 18:10:09 · 3909 阅读 · 0 评论 -
Android平台开发C++程序的有效工具
一、打印调用栈程序开发和调试很多时候都离不开调用栈的打印,尤其是调试复杂的程序,比如异步程序时或基于回调的程序时,看代码还是挺费时间的,效率还不高。这时打印一下调用栈往往事半功倍。在linux上打印调用栈有backtrace, backtrace_symbols, backtrace_symbols_fd等函数可以用,在shell中man backtrace就可以看到相关解释。在a原创 2015-04-13 14:22:35 · 1066 阅读 · 0 评论 -
如何解决C程序中不同静态库之间的符号冲突问题
之前在将helix player移植到ios平台时遇到过这个问题,现在整理一下,给自己做个总结,也希望能对别人有所帮助。问题的描述: 如果helix在ffmpeg之前是一个小有名气的开源的播放引擎,由Realnetworks维护,像nokia的塞班系统上都用的是这个播放引擎,而且现在国内的一些手机上还有它的影子。helix将各个功能模块以动态库的形式进行组织管理。当播放一个视频时,比如rm原创 2015-04-14 16:23:41 · 7690 阅读 · 0 评论 -
Linux中maps/smaps的妙用
这篇文章的目的是为了记录之前做过的一个工作:减小server运行时所占的内存。这个server本来是一个PC上的多媒体server,后来我们把它移植到android机顶盒上,仍然当一个server使用,但是用户量比之前小很多。原来的server对内存的使用也没有什么顾虑,一般都配备很大的内存,而机顶盒对内存占用要求比较高,因为它本身的内存就很小,还有其他的程序在运行,所以我们就面临着减少s原创 2015-04-13 17:32:01 · 8840 阅读 · 1 评论 -
函数调用栈的获取原理分析
转自:http://hutaow.com/blog/2013/10/15/dump-stack/上一篇文章《在Linux程序中输出函数调用栈》,讲述了在Linux中如何利用backtrace获取调用栈,本篇文章主要介绍一下获取函数调用栈的原理,并给出相应的实现方式。要了解调用栈,首先需要了解函数的调用过程,下面用一段代码作为例子:#include int add(int a转载 2015-04-14 11:47:34 · 1207 阅读 · 0 评论 -
leetcode - Insert Interval
Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary).You may assume that the intervals were initially sorted according to their start times.E原创 2015-04-09 16:45:44 · 456 阅读 · 0 评论 -
排序算法的简单总结
1. STL sort: template void sort( RandomIt first, RandomIt last); template void sort( RandomIt first, RandomIt last, Predicate comp); 说明: Implementation: sort() uses an introsort (qui原创 2015-04-28 16:19:10 · 496 阅读 · 0 评论 -
c++中不能被继承的类(c++ final class)
昨天有人问我这个问题,在java中这不是个问题,因为有final关键字,而C++11中也有final关键字。但C++11之前呢,如何实现?首先想到的是可以将构造函数声明为private的,这样是可以阻止被别人继承,但这个类用起来也是很不方便,只能通过static成员函数来得到一个对象指针。如果要在栈上定义一个对象都做不到,太麻烦了。网上有一种方法是用virtual原创 2015-05-05 16:28:14 · 2583 阅读 · 0 评论 -
算法,请不要这么经典 - 平衡二叉搜索树AVL
AVL 实现: https://code.csdn.net/hp_truth/data_structure_and_algorithm/tree/master/tree/AvlTree.h之前的一篇文章简单地介绍了二叉树的可视化,有了这个工具,可以更直观地对二叉搜索树进行理解。二叉搜索树的查找比较简单,效率取决于树的左右子树是否平衡,对于平衡的二叉搜索树,查找的时间复杂度是O(n)。而树是原创 2015-05-06 14:42:29 · 697 阅读 · 0 评论 -
链接错误 undefined reference to 'atexit'
今天遇到一个Android平台的链接错误,我在c++的一个类的成员函数中定义了一个static的变量,编译能通过,但是链接时报错: undefined reference to ’atexit‘。在ubuntu上试着重现,发现没这个问题,32位、64位都没问题。google之后发现相关线索很少,只看到了这个论坛上提到这个类似问题:http://forum.arduino.cc/inde原创 2015-01-06 15:32:47 · 3805 阅读 · 1 评论 -
sizeof and strlen
char s1[] = "hello";sizeof(s1) = 6 strlen(s1) = 5char *s2 = "hello";sizeof(s2) = 4strlen(s2) = 5char s3[10] = "hello";sizeof(s3) = 10;strlen(s3) = 5char s4[] = {'h', 'e', 'l', 'l',原创 2014-10-09 14:47:03 · 340 阅读 · 0 评论 -
add delimiter into string
#include #include using namespace std;string formatString(const string& str, int segWidth, char delimiter){ size_t size = str.size(); size_t pos = 0; string result; if (size > 0原创 2014-10-10 12:03:02 · 461 阅读 · 0 评论 -
如何生成静态库和动态库
对于一个编译型语言,编译器工作时总要经过预处理、编译、链接等几个过程。以 C/C++ 为例:预处理器(cpp)将每个 .c/.cpp 文件中 #include 的头文件都合并到 .c/.cpp 文件中,并且对其进行宏扩展,由此生成数个编译单元。一般来说每个 .c/.cpp 文件对应一个编译单元。随后,编译器(cc)将每个编译单元翻译成本地二进制代码,在 GNU/Linux 中后缀是 .o,在 ms转载 2014-10-10 15:00:19 · 697 阅读 · 0 评论 -
generate UUID using uuid library or system uuid
#include string Util::generateUUID(){#if 0 uuid_t uu; uuid_generate(uu); char buffer[32] = {0}; uuid_unparse(uu, buffer); //cout << buffer << endl; return string(buffer);#原创 2014-10-10 10:40:26 · 1471 阅读 · 0 评论 -
split STL string by chars
vector split(const string& src, const string& separator){ vector result; string str = src; string substring; string::size_type start = 0, index; do { index = str.find原创 2014-10-10 10:19:50 · 457 阅读 · 0 评论 -
stricmp in STL
inline bool nocase_compare (char c1, char c2){ return toupper(c1) == toupper(c2);}inline bool str_nocase_cmp(const std::string &str1, const std::string &str2){if(&str1 == &str2)return true;if(str1.siz原创 2014-10-09 18:09:48 · 431 阅读 · 0 评论 -
获取linux机器的IP和mac地址
#include // for ::strncpy#include // for ::ioctl#include // for inet_ntoa#include // for struct ifreq#include // for ::close#include #include #include using namespace std;int GetNetDev原创 2014-10-10 16:47:12 · 1514 阅读 · 0 评论 -
c struct offsetof
在头文件中定义了宏原创 2014-10-15 10:40:53 · 657 阅读 · 0 评论 -
c++ 判断文件是否存在
bool fileExist(const string& name){ ifstream ifs(name); if(ifs.is_open()) { ifs.close(); return true; } else { return false; }}原创 2014-10-15 18:05:13 · 1005 阅读 · 0 评论 -
链接的时候如何去掉没有用到的函数、目标文件
以前了解过ld在链接的时候,是以原创 2014-10-17 15:13:17 · 4621 阅读 · 0 评论 -
STL中的iterator形参为什么不是传引用而是传值
在STL中,我们能见到很多函数的形参都是iterator的传值,而不是传引用。你会不会问,为什么不是传引用,传引用不是效率更高吗?这是因为我们通常这么用:void print_vector(vector::iterator beg, vector::itertor end);while(beg != end) { cout print_vector(v.原创 2014-10-17 18:22:43 · 3667 阅读 · 0 评论 -
pthread_cond_wait的spurious wakeup问题
关于这个问题,是我第一次在看转载 2014-10-21 15:49:47 · 875 阅读 · 0 评论 -
mktime时间的转换
最近在分析一些log的时候需要进行时间的处理,log中的时间格式是这样的:"05/Jan/2015:16:12:15"。由于需要计算两个时间的差值,所以将其转换成数字进行处理会比较方便。于是先解析这个字符串,提取相应的字段,然后用mktime转换成time_t。结果在ubuntu上测试没问题,在android上却出现计算出来的时间比输入的时间少了3600s。原来是需要把struct tm中原创 2015-01-09 11:21:57 · 4733 阅读 · 0 评论