自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

victorydh123的专栏

With Great Aspiration to be the master of the future!

  • 博客(20)
  • 收藏
  • 关注

转载 C++ STL容器类vector,list和deque的比较

原始转载地址: http://ikaruga.name/Technology/ccplusplus/stlCollection.html 但是原始转载地址已经失效,本文直接转载地址:http://www.cppblog.com/sailing/articles/161659.htmlSTL容器类vector,list和deque的比较 作者: 斑鸠 更新时间: 2009/01/04

2017-06-24 01:34:31 411

原创 C++中的完美转发

C++中的完美转发(perfect-forwarding)到底是什么?说到底,它其实就是一个类型转换,能够将传递到母函数的参数原封不动(这里的原封不动不仅指值不变,还包括类型信息,限定符之类的)在转发给其他函数。 表示形式就是这样:func(expr); //处理函数fwd(expr){ func(std::forward(expr)); //这里省略了很多细节}fwd就是上面我们说

2017-06-23 12:18:32 991 1

原创 C++11中的universal引用和右值引用

stackoverflow上有个问题:Why “universal references” have the same syntax as rvalue references? 就是说为什么这俩的形式都是T&&(T表示一个类型)。其中有一个回答很好,回答如下: I think it happened the other way around. The initial idea was to in

2017-06-22 14:19:31 1475

翻译 Effective Modern C++: Item 13 -> 优先选择const_iterators而不是iterators

优先选择const_iterators而不是iteratorsconst_iterators是STL里面对指向常量的指针的等价物。它们指向一些不能被修改的值。只要可以就使用const的标准做法,让我们也应该在任何需要一个iterator并且不需要修改iterator指向的东西的时候去使用const_iterator。这对于C++98和C++11都适用,但是在C++98里,对const_iterato

2017-06-21 14:20:12 435

翻译 Effective Modern C++: Item 12 -> 声明覆盖函数override

声明覆盖函数overrideC++中面向对象编程的世界中主要涉及类,继承和虚函数。在这个世界中最基础的思想之一就是继承类中的虚函数实现会覆盖掉基类中的对应实现。然而,意识到虚函数覆盖多么容易出错将令人沮丧。该语言的这个部分几乎就是按照这个想法来设计的:墨菲定律不只是被用来遵守的,还是被膜拜的。因为覆盖(“overridding”)听起来很像重载(“overloading”,即使它俩毫无关联

2017-06-21 11:00:20 271

翻译 Effective Modern C++: Item 11 -> 优先选择deleted函数而不是私有未定义函数

优先选择deleted函数而不是私有未定义函数如果你要提供代码给其他的开发者,而你想要阻止他们调用某个特定函数,一般来说你就不声明这个函数了。没有函数声明也就没有函数可调用。简单,小菜一碟!但有时候C++会自动给你声明函数,而如果你想要阻止客户调用这些函数,那就不是小菜一碟了。这种情况只有在”特殊成员函数”那里才会出现,特殊成员函数就是当它们需要时,C++会自动给你生成的成员函数。Item

2017-06-20 21:37:01 241

翻译 Effective Modern C++: Item 10 -> 优先选择scoped enums而不是unscoped enums

优先选择scoped enums而不是unscoped enums作为一个基本规则,在一个大括号里面声明一个名字会将其可见性限制在大括号定义的范围内。但是对于以C++98风格enum声明的枚举器就不再适用了。这类枚举器里面的名字属于包含了enum声明的范围空间,那也就意味着在那个范围内不能再有其他与之相同的名字:enum Color {black, white, red}; //black.whi

2017-06-20 21:24:16 390

翻译 Effective Modern C++: Item 9 -> 优先选择别名声明(alias declaration)而不是typedef

优先选择别名声明(alias declaration)而不是typedef我很确信我们都同意使用STL容器是个好主意,并且我希望Item 18能够使你坚信使用std::unique_ptr也是一个好主意,但是我猜我们都不喜欢频繁写出类似于”std::unique_ptr<std::unpordered_map<std::string,std::string>>”这样的类型。就是想一想都可能增加患上腕

2017-06-20 19:27:11 301

翻译 Effective Modern C++ : Item 8 -> 优先选择nullptr而不是0和NULL

优先选择nullptr而不是0和NULL我们知道:0是一个int,而不是一个指针。如果C++在一个只有指针才能够使用的上下文中发现它只有一个0,那么它会勉强将0解释成空指针,但那时一种倒退行为。C++的主要方针是0就是一个int,而不是指针。实际上来说,对于NULL也是一样。

2017-06-20 14:04:42 343

翻译 Effective Modern C++: Item 7 -> 创建对象时分清()和{}

当说到大名鼎鼎的特性,C++11和C++14有许多可以吹。auto,智能指针,移动语义,lambda表达式,并行—-每一个都是如此重要,值得我用一个章节来阐述。掌握这些特性很重要,但是成为一名有效率的现代C++程序员也需要走过一系列更小的步骤。每一步回答一个专门的问题,这些问题是从C++98转向现在C++11过程会出现的。当你创建对象时,什么时候应该使用大括号而不是小括号?为什么别名声明要比typ

2017-06-20 11:02:04 401

翻译 Effective Modern C++ : Item 6 -> 当auto推断出不想要的类型时,使用显式类型初始化语法

当auto推断出不想要的类型时,使用显示类型初始化语法Item 5里面说了使用auto来声明变量与显式声明变量相比,有着很多的技术优势,但是有时候你想要一个zag,auto可能给你推断出一个zig。例如,假设我有一个函数,接受一个Widget参数,返回一个std::vector<bool>,其中每一个bool值都指示该Widget参数是否提供一个相应的特征。std::vector<bool> fea

2017-06-19 22:31:36 333

翻译 Effective Modern C++: Item 5 -> 优先选择auto而不是显式类型声明

概念上讲,auto真的特别简单,但是它实际上比它看起来要更加巧妙。使用它确实可以节省打字时间,但是它又是也会导致一些问题,会对手动类型声明造成一定的困扰。另外,有一些auto的类型推断结果,尽管是按照特定的算法执行的,但是从程序员的角度来看,它就是错的。当你真遇到这个问题时,很重要的一点就是将auto改对,使得其得出正确的答案,而最好不是自己手动输入类型声明。优先选择auto而不是显示类型声明哈,小

2017-06-19 18:51:58 310

翻译 Effective Modern C++: Item 4 -> 知道如何查看推断类型

知道如何查看推断类型查看推断类型的工具选择其实决定于你想在软件开发的什么阶段看到这些信息。我们将探索三种可能:在你编辑代码的时候查看,编译的时候查看以及运行的时候查看集成开发环境(IDE)编辑器在IDE里面的代码编辑器里,当你将鼠标光标停留在program入口处(比如说变量名,参数或者函数等),一般来说会显示出入口处的类型。例如,考虑下面的代码:const int theAnswer = 42;au

2017-06-19 15:07:18 278

翻译 Effective Modern C++: Item 3 ->弄清decltype

弄清decltypedecltype是一个奇怪的创造。给出一个名字或者表达式,decltype就会告诉你名字或者表达式的类型。一般情况下,它告诉你的正如你所预测的那样准。但有些情况下,它给你的结果却会让你直挠头,不得不去参考书或者网上的QA论坛去请教了。我们先从一般case开始–就是不会让你吃惊的那一类。相比于模板和auto的类型推断的过程(参考Item 1和Item 2),decltype一般会返

2017-06-19 14:35:23 338

翻译 Effective Modern C++:Item 2 ->弄清auto类型推断

弄清auto类型推断如果你已经读了Item 1关于模板类型推断的内容,你现在差不多已经知道了关于auto类型推断的所有知识,因为,除了有一个比较奇怪的例外,auto类型推断就是模板类型推断。但是这又是如何做到的?模板类型推断涉及到模板、函数以及参数,但是auto却没有处理这其中任何一个。事实虽然如此,但是这并不影响。模板类型推断和auto类型推断之间有一个直接映射关系,有一个算法可以将其中一个转换成

2017-06-19 11:57:11 296

翻译 Effective Modern C++ :Item 1 -> 理解模板类型推断

理解模板类型推断当一个复杂系统的用户对于系统内部如何工作一无所知,并且对其所做的工作表示很满意,这其实算是对一个系统设计很高的评价了。按照这种说法,C++中的模板类型推断真的是一个巨大的成功。成千上万的程序员已经试过向模板函数中传递参数,并且获得了满意的结果,即使这其中很大一部分程序员对于这些函数的类型是如何推断出来的了解甚少。如果你也是上面群体中的一员,那么我有一个好消息和一个坏消息。好

2017-06-19 00:59:55 346

原创 复制构造函数

以下代码全都是在VS2015的Debug模式下运行的,使用其他编译器可能会结果不一样,比如g++就不是这样。先看下面的代码://code 1#include <iostream>using namespace std;class Resource {public: Resource() { cout << "Resource Constructor!" << endl;

2017-06-18 16:12:14 282

翻译 C++中的右值引用

欢迎使用Markdown编辑器写博客这里写代码片本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用

2017-06-17 01:04:46 725

转载 (笔记)什么是命名空间 为什么C++头文件有的要加.h有的不用加.h

引言:问题:学习过C,然后再学c++的人可能会这么问,我#include之后,不就是把头文件拉进来了吗,而cin cout等函数不就是iostream.h里面的函数吗,我使用cin cout时,编译器为什么会说  “Error 未定义标示符”呢?解决方法:这样写[cpp] view plaincopy#

2015-01-29 16:34:08 1286 1

原创 Ubuntu14.04下安装codeblocks+wxWidgets

环境:Ubuntu14.04/*咳咳,如果你使用的是校园网,强烈推荐使用中国科学技术大学的源,速度真的超级快!*/步骤如下:   1.      安装基本编译环境        sudo apt-get install build-essentialsudo apt-get install gdb2.      安装codeblocks   sudo apt-g

2015-01-25 19:00:11 3005

空空如也

空空如也

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

TA关注的人

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