自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 Effecticve学习笔记_条款46:需要类型转换时请为模板定义非成员函数

条款24已经讨论过为什么惟有non-member函数才有能力“在所有实参身上实施隐式类型转换”,这里还以Rational class的operator*函数为例。   这里将Rational和operator*模板化了:template<typename T>class Rational{public: Rational(const T& numerator = 0, const T

2016-08-31 11:52:34 438

原创 快慢指针及其应用

快慢指针,顾名思义就是设置两个指针,在同一个链表中不同步的游走。快指针每次走两步,慢指针每次走一步,如果链表不是循环链表,那么快指针会始终在慢指针前面,如果链表存在环路,那么当进入环中以后,由于快指针移动较快,它与慢指针总会有相遇的时刻。就如同我们在环形跑道上跑步一样,速度快的人在跑若干圈之后会再次追上速度慢的人,再次相遇。因此本节我们介绍如何利用快慢指针来判断一个链表是否存在环并返回环开始的结点。

2016-08-30 09:36:49 529

原创 管线命令

bash 命令执行癿时候有输出癿数据会出现! 那么如果这群数据必需要经过几道手续之后才能得到我们所想要的格式,应该如何来设定? 这就牵涉到管线命令的问题了 (pipe) ,管线命令使用的是“|”这个界定符号! 另外,管线命令与“连续下达命令”是不一样的呦! 这点底下我们会再说明。底下我们先举一个例子来说明一下简单的管线命令。 假设我们想要知道 /etc/ 底下有多少档案,那么可以利用ls /etc

2016-08-29 18:00:23 545

原创 Effecticve学习笔记_条款45:运用成员函数模板接收所有兼容类型

假设有一个基类和一个派生类像下面这样:class Base{};class Derived : public Base{};  由于类间的上行转换时安全的,我们可以得到如下的正确结果:Derived* d;Base* b = static<Base*>d;  下面我们自己写一个简单的SharedPtr智能指针类:template<typename T>class SharedPtr{p

2016-08-26 11:44:15 575

原创 Effective C++学习_条款44:将与参数无关的代码抽离

当你编写某个函数,而你明白其中某些部分的实现码和另一个函数的实现码实质相同,你会很单纯地重复这些码吗?当然不。你会抽出两个函数的共同部分,把他们放进第三个函数,然后令原先两个函数调用这个新函数。同样道理,在编写类的时候你也会以相同的方式来避免重复。  举个 例子:假设 你想为一个尺寸固定的正方矩阵编写一个template。该矩阵的性质之一是支持逆矩阵运算。template<typename T, s

2016-08-25 10:17:08 362

原创 Linux Shell数据重定向

在了解重定向之前我们需要先知道什么时文件描述符。linux文件描述符  linux文件描述符可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作。 用户可以自定义文件描述符范围是:3-num,这个最大数字,跟用户的:ulimit –n 定义数字有关系,不能超过最大值。   linux启动后,会默认打开3个文件描述符,分别是

2016-08-24 22:20:46 375

原创 八大经典排序算法总结

无论我们平时是自己写工程代码,还是刷各种求职宝典的题目,亦或是临场面试的时候,我们可能都逃脱不了要写排序算法,那么这里我将对平时常用的几种排序算法做一个总结,分享给大家。   (注:以下排序过程均以从小到大的顺序,代码实现均用C++)1. 选择排序  基本思想:给定一个序列,从中找到最小的一个放到序列的第一个位置,再从剩下的n-1个中找到最小的放到第二个位置……直到剩下最后一个元素就直接放在最后为

2016-08-24 16:39:23 471

原创 Effective C++学习笔记_条款42:了解typename的双重意义

本节介绍typename的两个用法。首先是一种常用的,让我们看一下下面两句:template<class T> class Widget; //使用“class”template<typename T> class Widget; // 使用“typename”  那么上述的class和typename有什么不同吗?答案是没有不同。二者都是声明template类型参数。这是我们最常见的一种t

2016-08-24 15:39:17 275

原创 Effective C++学习笔记_条款43:学习处理模板化基类内的名称

有两个不同的公司,想发送不同的消息给这个两个公司,消息可以是明文,也可以是译成密码的形式发送。于是我们采用动态绑定。先定义一个发送消息的类BaseSendMsg,包含SendMsgTxt以及SendMsgSecret两个virtual函数,然后另外定义两个类CompanyA和CompanyB,这两个类分别继承BaseSendMsg,并分别重写自己的发送消息的函数。   但是我们这里想换一种思路,使

2016-08-24 15:24:07 334

原创 STL算法之移除性算法

本节所介绍的几个算法,是在一个区间内移除某些元素。这些算法并不能改变元素的数量,它们只是以逻辑上的思考,将原本置于后面的“不移除元素”向前移动,覆盖那些被移除的元素而已。它们都返回新区间的逻辑终点。(也就是最后一个“不移除元素”的下一位置)1. 移除某些特定元素  下面以程序示范remove()和remove_if()的用法,后面再加以说明:/*ForwardIterator remove(For

2016-08-23 20:42:03 335

转载 C++编译期多态与运行期多态

概述现在的C++已经不是单纯的”带类的C”,它已经发展成为一个多种次语言所组成的语言集合,其中泛型编程与基于它的STL是C++发展中最为出彩的那部分。在面向对象C++编程中,多态是OO三大特性之一,这种多态称为运行期多态,也称为动态多态;在泛型编程中,多态基于template(模板)的具现化与函数的重载解析,这种多态在编译期进行,因此称为编译期多态或静态多态。在本文中,我们将了解: 1.什么是运行

2016-08-23 10:12:12 299

原创 智能指针之shared_ptr

在智能指针中,auto_ptr已经使用的越来越少了,特别是在C++11中,它已经被shared_ptr取代,原因主要有以下两点:auto_ptr不能保留指针所有权class Test{public: Test(int m) : m_test(m) {} ~Test();public: int m_test;};/*********************/voi

2016-08-18 20:26:15 197

原创 C++类型转换之static_cast和dynamic_cast

static_cast (1)用于基本的数据类型转换test_enum type = test_enum_1;char a ;int b = static_cast<int>(a);char c = static_cast<char>(b);type = static_cast<test_enum>(b);char* pa = NULL;int *pb = (int*)pa;//int

2016-08-17 10:46:20 438

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除