C++语言
文章平均质量分 78
Enockipp
目前小硕在读中
展开
-
英雄会(csdn pongo)题解之半质数的个数--2·14情人&元宵节专题
题目详情质数是大家熟知的概念,我们定义一个半质数的概念:如果一个数恰好是两个质数的乘积(可以相同),则称它为半质数。前几个半质数是 4, 6, 9, 10, 14, 15, 21, 22, 25, 26。我们的问题是,输入两个正整数x输入:x,y输出:[x,y]之间有多少个半质数。输入数据范围 11.我的做法:需要明白:(1)两个质数的乘原创 2014-02-15 11:28:47 · 2273 阅读 · 0 评论 -
C++学习之虚继承的概念
转自:http://blog.csdn.net/crystal_avast/article/details/7678704C++中虚拟继承的概念为了解决从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题,将共同基类设置为虚基类。这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,同一个函数名也只有一个映射。这样不仅就解决了二义性问题,也节省了内存,转载 2014-03-20 12:28:15 · 807 阅读 · 0 评论 -
C++学习之new返回值的误用-new(nothrow)
转自:http://blog.csdn.net/starryheavens/article/details/70024041.plain new/delete.普通的new定义如下:void *operator new(std::size_t) throw(std::bad_alloc);void operator delete(void*) throw();注:标准C转载 2014-04-02 09:25:38 · 2644 阅读 · 0 评论 -
C++学习之泛型算法概述--摘自C++primer4
本文主要讨论C++标准库中的泛型算法(generic algorithm)。泛型算法是使用容器的强有力的辅助工具。 如果文中有错误或遗漏之处,敬请指出,谢谢! 标准库为容器类型定义的操作很少,并没有为每个容器实现更多的操作。因为这部分操作可以抽象出来为所有的容器工作,那就是泛型算法。所谓“泛型”是指这些算法可以应用于多种容器类型上,而容器内的元素类型也可以多样化。标转载 2014-03-22 20:14:20 · 945 阅读 · 0 评论 -
面试题:一个短小强悍的C++面试题---违背Effective C++的条款37:绝不重新定义继承而来的缺省参数值
转自:http://blog.csdn.net/zjq2008wd/article/details/18559871#comments#includeusing namespace std;class Base{public:virtual void show(int i=10){ cout<<"Base show i="<<i<<endl; } virtual ~转载 2014-03-20 11:00:00 · 1177 阅读 · 0 评论 -
C++学习之迭代器
C++标准库中的3个重要概念就是容器,迭代器,算法,标准库中的常用容器有vector,list,deque,map,set,multimap,multiset,这些容器大家都经常用到,相对比较熟悉。而使用C++,就必须得熟悉其提供给我们的100多个泛型算法,这样我们就可以避免重复造轮子。泛型算法不是调用容器已有的操作实现,而是借助于迭代器来实现,所以调用泛型算法的时候,我们需要传递迭代器参数来指明原创 2014-03-19 23:08:54 · 1492 阅读 · 0 评论 -
C++学习之多态及重载(overload),覆盖(override),隐藏(hide)的区别
C++编程语言是一款应用广泛,支持多种程序设计的计算机编程语言。我们今天就会为大家详细介绍其中C++多态性的一些基本知识,以方便大家在学习过程中对此能够有一个充分的掌握。 多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(polymorphisn),字面意思多种形状。 C++多态性是通过虚函数来实现的,虚函数允许子类重新定转载 2014-03-27 21:48:17 · 2436 阅读 · 0 评论 -
C++学习之类提供的默认函数-构造、复造、析够、赋值、取址
转自:http://blog.sina.com.cn/s/blog_5f76aaf20100cwlj.html定义一个空的C++类,例如class Empty{}一个空的class在C++编译器处理过后就不再为空,编译器会自动地为我们声明一些member function,一般编译过去就相当于class Empty{public:Empty();转载 2014-03-26 22:51:43 · 1617 阅读 · 0 评论 -
编译器预定义宏__GNUC__和_MSC_VER
预定义宏__GNUC__和_MSC_VER一、预定义__GNUC__宏 1 __GNUC__ 是gcc编译器编译代码时预定义的一个宏。需要针对gcc编写代码时, 可以使用该宏进行条件编译。 2 __GNUC__ 的值表示gcc的版本。需要针对gcc特定版本编写代码时,也可以使用该宏进行条件编译。 3 __GNUC__ 的类型是“int”,该宏被扩展转载 2014-04-22 22:41:07 · 2209 阅读 · 0 评论 -
Effective C++:条款52 写了placement new也要写placement delete
这个条款的具体内容自己看书去,我只是原创 2014-05-07 21:30:44 · 946 阅读 · 0 评论 -
C++学习之c++函数对象(仿函数)
学习了标准库算法(参见C++学习之标准库泛型算法_STL算法)后,就需要掌握函数对象来配合使用标准库算法。比如一些 _if 版本算法,需要一个断言(函数指针)参数,那么我们就可以使用函数对象作为断言参数。参考http://www.cplusplus.com/reference/functional/和C++primer第4版14.8节。cplusplus.com是在看书有疑惑时,可以参考的原创 2014-04-01 15:51:43 · 1296 阅读 · 0 评论 -
面试题--C++常识面试题
今年要找工作了,准备点基础地面试题1,关于动态申请内存答:内存分配方式三种:(1)从静态存储区域分配:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。全局变量,static变量。(2)在栈上创建:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令转载 2014-03-16 19:45:36 · 1102 阅读 · 0 评论 -
C++学习之inline、#define、const和static的解释
define:定义预编译时处理的宏;只进行简单的字符替换,无类型检测typedef:定义类型别名 用于处理复杂类型 例: typedef int A; 则:A a; //定义a为intinline: 内联函数对编译器提出建议,是否进行宏替换,编译器有权拒绝 既为提出申请,不一定会成功static一、产生背景引出原因:函数内部定义的变量,在程序执行到它的转载 2014-02-11 21:56:17 · 856 阅读 · 0 评论 -
英雄会(csdn pongo)题解之字符串转换成整数
题目详情:输入一个表示整数的字符串,把该字符串转换成整数并输出,例如输入字符串"345",则输出整数345。请完成函数StrToInt,实现字符串转换成整数的功能。友情提醒:提交代码之前,请复查下你的程序,比如当给的字符串是如左边图片所示的时候,有考虑到么?当然,它们各自对应的正确输出如右边图片所示(假定你是在32位系统下,编译环境是VS2008原创 2014-02-12 16:38:15 · 906 阅读 · 0 评论 -
英雄会(csdn 高校俱乐部)题解之友好数(1)
题目详情:如果两个正整数组成它们的数字和相同则称它们互为友好数,给定正整数x,求比它大的最小的友好数。例如x = 222, 输出231,因为2 + 2 + 2 = 6 = 2 + 3 + 1。输入一个正整数x,由于输入数字较大,我们用字符串作为输入,字符串不包含首'0'。 (0 --------------------------------------------------分割原创 2014-02-11 23:08:27 · 1056 阅读 · 0 评论 -
C++编译错误"a storage class can only be specified for objects and functions"解决方法
昨天在写积分器控制程序的时候,类里面定义了一个枚举类型,编译的时候出现了上述错误,造成错误的原因是在这个枚举类型前面有static修饰符,如下:static enum cmd{IntHelp,IntDelayCharge,IntDelayDisCharge,IntStandard,IntPulse};去掉前面的static编译通过。对于这个错误,顾名思义,就是"storage cl转载 2014-03-05 08:54:12 · 9509 阅读 · 0 评论 -
C++ static、const和static const 以及它们的初始化
在写EPICS监测局域网中的在线pc的时候,用了nmap,因为知道IP段,就把nmap的参数写成了const static,记得C++primer中提到过const static类型的数据成员可以在类内进行初始化,就像下面这样写了代码:class CheckStatus{ public: const static std::string checkStr("nm转载 2014-03-06 15:31:50 · 1030 阅读 · 0 评论 -
英雄会(csdn pongo)题解之求导数
这道题很简单,从题目中给出的几种倒数的求法和我们对求导的理解,得出通过递归即能求解,写这篇博客的目的是感觉这道题描述不是很好,尤其是里面有句"输入保证合法。注意要带着括号",让我以为测试用例中没有像((((x)*(x))))这样外面有多余的括号的情况,而测试用例里面竟有这样的,这时需要将最外面的多余括号保留到最终的求导结果中,所以写这篇博客,为了减少大家在测试用例上浪费的时间,还有从题目中可以看出原创 2014-03-07 22:43:28 · 1487 阅读 · 4 评论 -
C++学习之成员函数的访问属性与继承属性对虚表构建的影响--个人理解
在C++学习之深入理解虚函数--虚函数表解之后,我感觉虚表的构建跟虚函数在基类中的访问属性、继承属性、在子类中的访问属性都没关系。反正也就27种情况,自己可以试下:如下面#include#includeclass parent1 {public: virtual void print(){ std::cout<<"in parent1"<<std::endl; }};cl原创 2014-03-28 15:39:54 · 997 阅读 · 0 评论 -
C++学习之标准库泛型算法_STL算法
参见http://www.cplusplus.com/reference/std/标准库中的算法主要在algorithm、numeric两个头文件,注意有些是只能在C++11下使用,比如all_of,any_of。还有就是标准库算法的参数在C98下是需要程序员来确保正确的比如:template class OutputIterator, class Size, class T>Outpu原创 2014-03-22 21:00:00 · 2560 阅读 · 0 评论 -
C++学习之智能指针--auto_ptr、scoped_ptr、scoped_array、shared_ptr、shared_array、weak_ptr
本文主要讲解C++primer中的智能指针和句柄的概念,以及标准库中的原创 2014-04-10 21:52:32 · 3251 阅读 · 0 评论 -
C++迭代器失效讨论
----------------下面转自 对于以下代码:[cpp] view plaincopy my_container.erase(iter); 其中my_container是STL的某种容器,iter是指向这个容器中某个元素的迭代器。如果不是在for,while循环转载 2014-04-25 22:48:03 · 911 阅读 · 0 评论 -
shared_ptr的线程安全性---为什么多线程读写 shared_ptr 要加锁?
为什么多线程读写 shared_ptr 要加锁?陈硕(giantchen_AT_gmail_DOT_com)2012-01-28最新版下载:http://chenshuo.googlecode.com/files/CppEngineering.pdf我在《Linux 多线程服务端编程:使用 muduo C++ 网络库》第 1.9 节“再论 shared_ptr 的线程安全”中写道:(shared_转载 2014-04-26 10:13:58 · 1274 阅读 · 0 评论 -
C++学习之STL线程安全性考虑
条款12:对STL容器线程安全性的期待现实一些 标准C++的世界是相当保守和陈旧的。在这个纯洁的世界,所有可执行文件都是静态链接的。不存在内存映射文件和共享内存。没有窗口系统,没有网络,没有数据库,没有其他进程。在这种情况下,当发现标准没有提到任何关于线程的东西时你不该感到惊讶。你对STL的线程安全有的第一个想法应该是它将因实现而不同。 当然,多线程程序是很普遍的,所以大部分STL厂商转载 2014-08-08 09:13:16 · 3115 阅读 · 0 评论 -
C/C++学习之strlen与sizeof区别、阿里巴巴笔试题实例
1.strlen是一个函数,而sizeof是一个操作符,它和解引用操作符*、取地址操作符&具有相同的优先级,具有右结合性,参见C++PRIMER第四版P1472.strlen是计算字符串中字符的个数,它计算的是从字符串首字符到'\0'前一字符的个数,即不包括'\0'在内。这个函数依赖与'\0‘这个结束标志,这也是C字符串的特点,比如计算下面字符数组的长度时,就会出现问题,char test[5原创 2014-03-30 15:46:00 · 1420 阅读 · 4 评论 -
C++学习之深入理解虚函数--虚函数表解析
转自:http://blog.csdn.net/haoel/article/details/1948051/前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模转载 2014-03-27 11:05:14 · 15625 阅读 · 5 评论 -
类成员函数作为pthread_create函数参数
转自http://blog.csdn.net/luo6620378xu/article/details/8521940近日需要将线程池封装成C++类,类名为Threadpool。在类的成员函数exec_task中调用pthread_create去启动线程执行例程thread_rounter。编译之后报错如下:spfs_threadpool.cpp: In member functi转载 2016-01-14 11:30:24 · 2355 阅读 · 0 评论 -
unordered_map与线性结构内存占比
转自http://blog.csdn.net/acaiwlj/article/details/49781877一、引言 当我们需要使用键值对的情况时,通常我们会使用map或者unordered_map。其中map底层是采用红黑树实现的,它的查询复杂度是O(lgn);unordered_map实际上是hash_map的实现,理论上它的查询复杂度是O(1)的。那么当我们需要使用键转载 2016-01-15 09:44:06 · 7730 阅读 · 2 评论 -
gcc #pragma pack c++模板template
gcc4.4.7下编译如下,不知为什么对模板的对齐控制不起效果,遂搜了点对模板的对齐控制相关的#include #pragma pack(2)template class a{private: id_type x; unsigned short y;};class b{private: int x;转载 2016-07-12 17:23:43 · 1184 阅读 · 0 评论 -
使用C++标准库sort自定义比较函数导致死循环问题
永远让比较函数对相等的值返回false(来自Effective C++)---------------------------------------------------------------------------------------------------------转自http://www.cnblogs.com/yuanzz/p/3735213.html转载 2016-08-17 09:06:20 · 3454 阅读 · 2 评论 -
C++11:POD数据类型
啥是POD类型?POD全称Plain Old Data。通俗的讲,一个类或结构体通过二进制拷贝后还能保持其数据不变,那么它就是一个POD类型。平凡的定义1.有平凡的构造函数2.有平凡的拷贝构造函数3.有平凡的移动构造函数4.有平凡的拷贝赋值运算符5.有平凡的移动赋值运算符6.有平凡的析构函数7.不能包含虚函数原创 2016-11-03 10:48:26 · 534 阅读 · 0 评论 -
【C++】使用libxml解析XML文件
OpenCV中使用FileStorage创建和解析XML文件。但FileStorage不能处理节点为空的情况,且对属性也不友好。例子见这里。libxml是C接口的处理xml文件的开源代码库。可以在这里下载。对于一段如下的xml文件:[html] view plain copy xml version="1.0"?> Message转载 2016-11-09 09:31:47 · 1368 阅读 · 0 评论 -
C++学习之STL的内存分配器
题记:内存管理一直是C/C++程序的红灯区。关于内存管理的话题,大致有两类侧重点,一类是内存的正确使用,例如C++中new和delete应该成对出现,用RAII技巧管理内存资源,auto_ptr等方面,很多C/C++书籍中都使用技巧的介绍。另一类是内存管理的实现,如linux内核的slab分配器,STL中的allocator实现,以及一些特定于某种对象的内存管理等。最近阅读了一些内存管理实现方面的转载 2014-08-08 10:03:56 · 3635 阅读 · 0 评论 -
C++学习之异常处理详解
一、什么是异常处理 一句话:异常处理就是处理程序中的错误。二、为什么需要异常处理,以及异常处理的基本思想 C++之父Bjarne Stroustrup在《The C++ Programming Language》中讲到:一个库的作者可以检测出发生了运行时错误,但一般不知道怎样去处理它们(因为和用户具体的应用有关);另一方面,库的用户知道怎样处理这些错转载 2014-03-30 16:49:36 · 3843 阅读 · 0 评论 -
Qt中使用QSqlDatabase::removeDatabase()的正确方法
转自:http://www.cnblogs.com/codingmylife/archive/2010/04/27/1722404.html转载 2014-05-27 22:43:39 · 1684 阅读 · 0 评论 -
Qt之下拉框QComboBox相关signal对比--activated与currentIndexChanged
QComboBox的activated与currentIndexChanged两Signal在一般情况下可以通用,都是改变选择时触发的信号,然而它们也有严格的区别: void activated ( int index )void activated ( const QString & text )信号activated是只要单击选择框即使所选内容选择前后没有变化也原创 2014-05-27 20:43:41 · 16551 阅读 · 5 评论 -
C++学习之赋值兼容规则以及在私有、保护继承下的强制转换
赋值兼容规则是指在需要基类对象的任何地方都可以使用公有派生类的对象来替代。通过公有继承,派生类得到了基类中除构造函数、析构函数之外的所有成员,而且所有成员的访问控制属性也和基类完全相同。这样,公有派生类实际就具备了基类的所有功能,凡是基类能解决的问题,公有派生类都可以解决。赋值兼容规则中所指的替代包括以下的情况: ·派生类的对象可以赋值给基类对象。 ·派生类的对象可以初始化基类的引用原创 2014-03-28 14:12:12 · 1282 阅读 · 0 评论 -
C++学习之构造函数的理解--模板形式的构造函数不会遮掩编译器生成的默认构造函数
我们都知道编译器会为我们定义默认的空参数构造函数和复制构造函数,其实复制构造函数和一般的带参数的构造函数的区别也就仅仅在与此(我认为),也就是在不显示定义复制构造函数的时候,系统会为我们合成一个默认的复制构造函数。1.定义一般的构造函数时,系统还是会为我们生成一个默认的复制构造函数,但是当定义了复制构造函数的时候系统就不再为我们定义默认的空参数构造函数,如下代码,将出现语法错误:class原创 2014-04-02 23:07:54 · 5431 阅读 · 0 评论 -
map和set关联容器迭代器失效的问题
STL map和set的使用虽不复杂,但也有一些不易理解的地方,如: 为何map和set的插入删除效率比用其他序列容器高? 为何每次insert之后,以前保存的iterator不会失效? 为何map和set不能像vector一样有个reserve函数来预分配数据? 当数据元素增多时(10000到20000个比较),map和set的插入和搜索转载 2014-07-26 12:01:21 · 3614 阅读 · 0 评论 -
C++学习之deque底层存储结构与迭代器失效情况
C++ STL容器deque和vector很类似,也是采用动态数组来管理元素。使用deque之前需包含头文件:#include 它是定义在命名空间std内的一个class template:template class _Ax = allocator > class deque; 第一个template参数用来表示元素型别,第二个转载 2014-08-03 09:22:57 · 1779 阅读 · 2 评论