C/C++语言知识点
文章平均质量分 91
一座青山
搜索引擎-sf1r
数据结构与算法
,数据库,大数据分析
数据挖掘,个性化搜索,机器学习
展开
-
关键字 const
1.const char **p 2. char const **p3. char * const *p4 . char ** const p1,2,3,4的区别是什么? 1 不能变的是 **p2.不能变的也是**p3.不能变的是 *p4.不能变的是p。1和2其实是一样的!另外百度上有个回答的很好! 看变量声明的时候应该从右至左原创 2014-01-15 20:49:59 · 529 阅读 · 0 评论 -
关于undefined reference to——C++模板类文件组织方式
转载自:http://kyleven.blog.163.com/blog/static/733813072010102444930449/今天在实现一个Lock Free的vector时,因为vector的实现方式采用了template的方式实现,在编译的时候出现了如下图中的问题,按照这篇文章的方法解决了问题。但是原理究竟是什么,还不清楚,需要了解编译连接的详细过程!转载 2016-04-06 16:18:08 · 5123 阅读 · 1 评论 -
C++ 虚函数表解析
文章转载自:陈皓的个人专栏http://haoel.blog.51cto.com/313033/124595最近在看《深入探索C++对象模型》,看完第四章之后上网搜索了下虚函数相关的知识。主要疑问是什么编译时候决定和运行期间决定?到现在还没搞的完全明白,不理解。还需要带着这个问题前行。读了作者的这篇文章,在服务器上验证了代码,理解加深,再次感谢作者陈皓。也分享给大家,希望更多人转载 2016-03-13 18:58:14 · 560 阅读 · 0 评论 -
vector 释放内存 swap
http://blog.csdn.net/jerryjbiao/article/details/7389233 相信大家看到swap这个词都一定不会感到陌生,甚至会有这样想法:这不就是简单的元素交换嘛。的确,swap交换函数是仅次于Hello word这样老得不能老的词,然而,泛型算法东风,这个小小的玩意儿却在C++ STL中散发着无穷的魅力。本文不仅详细地阐述STL泛转载 2016-04-07 15:24:39 · 512 阅读 · 0 评论 -
vector 详细用法 C++
使用STL的三个境界:能用,明理,能扩展。本文属于第一个境界,如果结合了《STL源码解析》,则达到了第二个境界,如果项目中有需要,对STL进行了扩展则就达到了第三个境界!如果希望深刻理解vector的这些个成员函数,最好的办法是详细了解其内部实现,《STL源码解析》是个好途径!当然,也可以直接看编译器自带的的源码。vector是C++标准模板库中的部分内容,vector之所以被认为原创 2016-04-11 20:54:48 · 40995 阅读 · 3 评论 -
C++ 之const关键字
本文转载自: http://blog.csdn.net/lihao21/article/details/8634876 我们知道,在C++中,若一个变量声明为const类型,则试图修改该变量的值的操作都被视编译错误。例如,[cpp] view plain copy const char blank = ‘’; blan转载 2016-05-04 14:09:52 · 325 阅读 · 0 评论 -
力美科技面试总结
总要问了三个方面;gdb调试的问题1.如果某个程序因为有bug而core dump,而且这个bug是间歇性出现的,如何定位到bug的位置?2.如何从一个进程进入某个线程?3.gdb中使用bt命令后如何打印出栈中某个函数的栈变量?多线程的问题1.线程和进程的区别是什么?2.什么时候选择进程,什么时候选择线程?3.僵尸进程是怎么产生的,如何避免?C++方面:1.原创 2015-05-12 23:54:17 · 1198 阅读 · 0 评论 -
C++析构函数为什么要为虚函数
转载自:http://www.cnblogs.com/lixiaohui-ambition/archive/2012/07/13/2589716.html注:本文内容来源于zhice163博文,感谢作者的整理。1.为什么基类的析构函数是虚函数? 在实现多态时,当用基类操作派生类,在析构时防止只析构基类而不析构派生类的状况发生。 下面转自网络:源地址 http:/转载 2015-04-09 22:38:41 · 1855 阅读 · 0 评论 -
虚函数,虚析构函数,虚函数表
转自http://hi.baidu.com/wangruiy01/blog/item/867552d0de8bdc339a502721.html先看下面一段程序:#include using namespace std;class Person{public:virtual ~Person() //加了virtual,讲析构函数原创 2015-04-09 22:43:21 · 1552 阅读 · 0 评论 -
关于C++的疑问
1.所谓的列表初始化效率更高,这是为什么?2.原创 2016-03-24 20:55:35 · 535 阅读 · 0 评论 -
为什么要使用虚函数和 指针(或是引用)才能实现多态?
首先说说为什么是这样一个题目最近我在学习《深度探索C++对象模型》这本书,明白了C++对象模型的内存布局。但也恰巧是这个内存布局让我有一次陷入了深深的疑惑之中。先看看我的例子:注:此例也是引用某位博主的,只是搜索的内容太多了,找不到原连接的位置了……。#include using namespace std;class Shape//形状{public: virtual原创 2016-03-14 20:10:46 · 4531 阅读 · 7 评论 -
搜索引擎中开发diversity功能时遇到的一个问题。
问题:作为一个商品集合平台的搜索引擎,在用户输入关键到得到排完序的搜索结果时,多数会面临一个问题,就是一整页的商品都是来自一个商家,全是京东的,或是全是天猫的,或是淘宝的,或是6pm的或是xxx的,……。需求:面对这个问题就诞生了我们的需求,就是将这些个相关性最高的商品再次以商家的维度进行打散!现有系统的设计:现有系统设计了一个基类:ProductScoreEvaluator,原创 2016-08-08 12:15:16 · 572 阅读 · 0 评论 -
【C++模版之旅】神奇的Traits
介绍traits的文章很多,但感觉大部分文章的说明都很晦涩难懂,把一个并不很复杂的C++模板的应用描述的过于复杂。忍不住想把自己的理解跟大家分享一下,或许我也只是掌握了一点traits的皮毛而已,但也希望这些皮毛能略微抓住你的眼球,带给你一些启发。首先,介绍traits前,回味一下C++的模板及应用,如果你脑海里浮现出的只是为实现一些函数或类的重用的简单模板应用,那我要告诉你,你out转载 2017-03-08 19:39:24 · 340 阅读 · 0 评论 -
typedef和#define的作用范围
转载自:http://blog.sina.com.cn/s/blog_70ec9a6f01014mqs.htmltypedef:如果放在所有函数之外,它的作用域就是从它定义开始直到文件尾;如果放在某个函数内,定义域就是从定义开始直到该函数结尾;#define:不管是在某个函数内,还是在所有函数之外,作用域都是从定义开始直到整个文件结尾。转载 2016-03-08 13:59:23 · 3590 阅读 · 0 评论 -
默认构造函数
1。默认构造函数定义:默认构造函数就是在没有显示提供初始式时调用的构造函数。其有两种形式:1.不带参数的构造函数;eg:example(){…………}2.带参数,但所有的参数都提供默认实参的构造函数;eg:example(int i=0, long j=6, char k='A'){…………}如果用户的类中没有显示的定义任何构造函数,编译器会在编译需要的情况下为该类生成原创 2016-03-15 21:37:05 · 588 阅读 · 0 评论 -
C语言中的命名规则
最近看了些Java的代码,感觉代码zho'g原创 2014-06-26 21:03:19 · 823 阅读 · 0 评论 -
C++ 虚函数表解析-----作者:陈浩
转载自:http://blog.csdn.net/baolong520/article/details/6602412前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。转载 2015-04-09 22:40:52 · 2467 阅读 · 3 评论 -
C++ 智能指针详解
C++ 智能指针详解转载自:http://blog.csdn.net/xt_xiaotian/article/details/5714477一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有转载 2015-05-10 23:31:23 · 1029 阅读 · 0 评论 -
C++11智能指针之unique_ptr
C++11智能指针之unique_ptr转载自:http://blog.csdn.net/rsljdkt/article/details/122232531.智能指针的概念智能指针是基于RAII机制实现的类(模板),具有指针的行为(重载了operator*与operator->操作符),可以“智能”地销毁其所指对象。C++11中有unique_ptr、shared_pt转载 2015-05-10 23:54:03 · 1390 阅读 · 0 评论 -
C++中特殊的成员变量的初始化方法
C++中特殊的成员变量的初始化方法转载自:http://www.cnblogs.com/zhoug2020/archive/2012/08/31/2665451.html有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括:a.引用b.常量c.静态d.静态常量(整型)e.静态常量(非转载 2015-05-13 00:06:16 · 531 阅读 · 0 评论 -
new和malloc的区别
转载自:http://www.cnblogs.com/fly1988happy/archive/2012/04/26/2470542.html1. malloc()函数1.1 malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void *malloc(unsigned int num_bytes); 说明:分配长度为num_bytes字转载 2015-05-13 00:28:06 · 537 阅读 · 0 评论 -
在case语句中定义变量的问题
转载自:http://blog.csdn.net/scutth/article/details/6894975今天在编写代码的过程中碰到了在switch……case……的case中定义一个变量编译出错的问题,搜素了下刚好有篇博文介绍。[cpp] view plaincopyswitch(n) {转载 2015-05-14 23:49:51 · 1554 阅读 · 0 评论 -
Linux几个调试宏__FUNCTION__ __TIME__ __LINE__ __FILE__ __DATA__
这几个宏是编译器内置的,不是哪个头文件中包含的,所以不需要包含任何头文件。代码如下:[cpp] view plaincopy#include int main() { printf("The file is %s.\n",__FILE__); printf( "The date i转载 2015-06-06 17:29:59 · 1100 阅读 · 0 评论 -
C++中四种类型转换方式
类型转换有c风格的,当然还有c++风格的。c风格的转换的格式很简单(TYPE)EXPRESSION,但是c风格的类型转换有不少的缺点,有的时候用c风格的转换是不合适的,因为它可以在任意类型之间转换,比如你可以把一个指向const对象的指针转换成指向非const对象的指针,把一个指向基类对象的指针转换成指向一个派生类对象的指针,这两种转换之间的差别是巨大的,但是传统的c语言风格的类型转换没有区分这些转载 2015-06-06 15:45:55 · 434 阅读 · 0 评论 -
关键字explicit
class CExample{ public: CExample(void); explicit CExample(int iFirst, int iSecond = 4); ~CExample(void); public: int m_iFirst; int m_iSecond;};//Example.cpp#include "Example.h"CExample::C原创 2015-08-05 14:22:15 · 486 阅读 · 0 评论 -
vector中v[i]与v.at(i)的区别
void f(vector &v){ v[5]; // A v.at[5]; // B}如果v非空,A行和B行没有任何区别。如果v为空,B行会抛出std::out_of_range异常,A行的行为未定义。c++标准不要求vector::operator[]进行下标越界检查,原因是为了效率,总是强制下标越界检查会增加程序的性能开销。设计vector是用来代替内置数转载 2015-12-30 13:23:48 · 3753 阅读 · 0 评论 -
vector利用swap()函数进行内存的释放 和capacity()、size()、clear()、reserve()函数
首先,vector与deque不同,其内存占用空间只会增长,不会减小。比如你首先分配了10,000个字节,然后erase掉后面9,999个,则虽然有效元素只有一个,但是内存占用仍为10,000个。所有空间在vector析构时回收。1、释放内存: empty()是用来检测容器是否为空的,clear()可以清空所有元素。但是即使clear(),所占用的内存空间依然如故。如果你需要空间动转载 2015-12-30 15:31:30 · 2472 阅读 · 0 评论 -
字符串常量到底存放在哪个存储区
字符串常量,放在哪个存储区呢?是“自动存储区”还是“静态存储区”中?比如:char *pstr="hello world!";这里,"hello world!"是一个字符串常量,pstr是在栈中的变量。我想问,字符串常量,在哪个内存区域分配空间呢?好像应该不是在“栈区“分配空间吧!!!一、预备知识—程序的内存分配一个由C/C++编译的程序占用的内转载 2017-03-15 17:15:34 · 10399 阅读 · 4 评论