
C/C++
夕阳那边
这个作者很懒,什么都没留下…
展开
-
static_cast在ATL中很常见.它是实现模版形式多态的关键.
来源http://blog.youkuaiyun.com/wishfly/article/details/2046195比如: template class CTest:public T { .... void SomeMethod() { T *pT = st转载 2014-11-14 21:08:59 · 570 阅读 · 0 评论 -
c++对象内存布局(虚表和虚指针)
参考文章: http://blog.youkuaiyun.com/haoel/article/details/3081385 http://www.cnblogs.com/kekec/archive/2013/01/27/2822872.html 虚函数表中虚函数在虚表中出现的位置是按照类中成员申明顺序,然后子类在前,父类在后的方式。 以下所有的函数均为虚函数。 普通继承: 虚表指针存在于子类的头部原创 2016-06-22 11:47:01 · 1258 阅读 · 0 评论 -
大数据处理问题
topK问题topK算法就是给出一堆数,在里面找出最大、最常出现的等一系列问题。 topK算法(常考) 方法1:K大小的数组存topK 维护一个K大小的排序数组,每次都和最后一个元素比较,如果比最后一个元素大的话,那么就把这个元素插入到排序数组中。因为元素的每个移动的次数可能是K,时间复杂度O(N*K) 方法2:K大小的堆存topK 维护一个K大小的小顶堆,每次都和堆最上面的元素作比较,如原创 2016-06-21 09:24:47 · 659 阅读 · 0 评论 -
倒排索引
转自 wiki百科:比如说,现在有这些文章以及文章中含有的单词 以英文为例,下面是要被索引的文本:文本0 - "it is what it is"文本1 - "what is it"文本2 - "it is a banana"我们就能得到下面的反向文件索引: "a": {2} "banana": {2} "is": {0, 1,原创 2016-05-13 17:30:19 · 437 阅读 · 1 评论 -
需要手写的算法之----------快速排序的排序的列子
int Partion(vector &vec , int begin , int end ){ if(begin == end ){ return begin; } if(begin vec.size() - 1){ cout<<"ERROR"; return -1; } int tmp = vec[begin]; while (begin < end ){ wh原创 2016-04-21 10:40:17 · 963 阅读 · 1 评论 -
weak_ptr和shared_ptr,以及什么时候用weak_ptr
参考文章https://cloud.github.com/downloads/chenshuo/documents/CppPractice.pdf值语义 (value sematics) 指的是对象的拷贝与原对象无关,就像拷贝 int 一样。 C++ 的内置类型 (bool/int/double/char) 都是值语义,标准库里的 complex、vector、string 等等类型也都是值语原创 2016-05-13 11:50:19 · 979 阅读 · 0 评论 -
shared_from_this
什么时候需要用到shared_from_this呢?当我们的函数需要能够返回到函数的智能指针的时候,因为如果是返回的this裸指针,那么这个对象的生命周期谁来保证呢?还有就是,如果我们用share_ptr来管理对象生命周期,那么整个代码中都应该是用share_ptr来管理。这里只是讲一下shared_from_this的用法算了,发现自己都懒得讲了,可以参考下面的提法,原创 2016-04-25 17:44:05 · 307 阅读 · 0 评论 -
const_cast 如何实现的
在c++里面,类型之间的转换是要检查的,但是指针之间的类型的转换并不检查原来的类型,例如下面的代码:(const_cast实现的原理)int main(){ const int constant = 21; int* modifier = (int*)(&constant); *modifier = 22; cout<<constant<<endl; cout<< *modifi原创 2016-05-11 15:27:01 · 1661 阅读 · 0 评论 -
《effectivec++》不在构造和析构过程中调用virtual函数
class Base{public: Base() { Foo(); } virtual ~Base(){} virtual void Foo() { std::cout << 1 << std::endl; } };class Derive : public Base{public: Derive(int v) :val_原创 2016-04-26 15:14:47 · 308 阅读 · 0 评论 -
关于子类调用基类的构造函数的各种问题
基类写了默认的构造函数,子类未明确调用 :(√) :这个情况,子类就可以默认调用到默认的构造函数基类写了的默认构造函数,子类明确调用 :(√) :这个情况,子类就可以默认调用到默认的构造函数基类没有写默认的构造函数,子类明确调用 : (√) : 这个情况,系统会给基类生成一个默认的构造函数,这样,子类就可以默认调用基类没有写默认的构造函数,子类未明确调用 : (√):这个情况,系统会给原创 2016-04-26 14:25:37 · 1302 阅读 · 0 评论 -
关于shared_ptr
其中主要说的是两个点,1、shared_ptr中有两个数据成员,一个指针,指向了data,另外一个,是指向了引用计数。2、一个shared_ptr复制需要两个步骤,一是复制data的指针,另外是将引用计数+1。这两个操作本身是原子的,但是这两个步骤不是原子的。多线程的环境中,就会出现,第一个线程复制了data的指针,但是却没有来得及将引用计数+1就切换到了下一个线程的情况。集体翻译 2016-04-01 10:55:00 · 424 阅读 · 0 评论 -
关于getline 什么时候截止的问题
istream& getline (char* s, streamsize n );istream& getline (char* s, streamsize n, char delim );什么时候截止:1、遇到了结束符2、包括null,已经有n个元素已经被读取了3、读取到了endoffile----此时,eofbit被置位4、没有读取到数据,failedbit被置位原创 2016-03-02 11:54:57 · 1014 阅读 · 0 评论 -
获取程序的运行时间
http://bbs.youkuaiyun.com/topics/80248650C/C++中的计时函数是clock(),而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:clock_t clock( void );这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MS转载 2014-06-24 11:38:05 · 400 阅读 · 0 评论 -
c++ 中继承方式权限转变 以及 恢复访问权限
参考:http://www.cnblogs.com/bizhu/archive/2012/07/20/2601303.htmlhttp://blog.youkuaiyun.com/slience_perseverance/article/details/20294053public 继承public => publicprotected => protected原创 2014-12-15 10:30:04 · 1157 阅读 · 0 评论 -
extern "C" c++如何实现函数的重载
待续原创 2016-04-26 14:17:39 · 516 阅读 · 0 评论