ZhangPY的专栏

不骄不躁,不屈不挠;严于律己,宽以待人

【C/C++开发】emplace_back() 和 push_back 的区别

在引入右值引用,转移构造函数,转移复制运算符之前,通常使用push_back()向容器中加入一个右值元素(临时对象)的时候,首先会调用构造函数构造这个临时对象,然后需要调用拷贝构造函数将这个临时对象放入容器中。原来的临时变量释放。这样造成的问题是临时变量申请的资源就浪费。  引入了右值引用,转移...

2017-09-17 09:40:32

阅读数:311

评论数:0

【C/C++开发】容器set和multiset,C++11对vector成员函数的扩展(cbegin()、cend()、crbegin()、crend()、emplace()、data())

一、set和multiset基础 set和multiset会根据特定的排序准则,自动将元素进行排序。不同的是后者允许元素重复而前者不允许。 需要包含头文件: #include set和multiset都是定义在std空间里的类模板: [c...

2017-09-17 09:39:02

阅读数:354

评论数:0

【C/C++开发】C++11 并发指南三(std::mutex 详解)

上一篇《C++11 并发指南二(std::thread 详解)》中主要讲到了 std::thread 的一些用法,并给出了两个小例子,本文将介绍 std::mutex 的用法。 Mutex 又称互斥量,C++ 11中与 Mutex 相关的类(包括锁类型)和函数都声明在 头文件中,所以如果你需...

2017-09-17 09:18:19

阅读数:371

评论数:0

【C/C++开发】C++11 并发指南二(std::thread 详解)

上一篇博客《C++11 并发指南一(C++11 多线程初探)》中只是提到了 std::thread 的基本用法,并给出了一个最简单的例子,本文将稍微详细地介绍 std::thread 的用法。 std::thread 在 头文件中声明,因此使用 std::thread 时需要包含 头...

2017-09-17 09:16:38

阅读数:241

评论数:0

【C/C++开发】C++11 并发指南一(C++11 多线程初探)

引言 C++11 自2011年发布以来已经快两年了,之前一直没怎么关注,直到最近几个月才看了一些 C++11 的新特性,今后几篇博客我都会写一些关于 C++11 的特性,算是记录一下自己学到的东西吧,和大家共勉。 相信 Linux 程序员都用过 Pthread, 但有了 C++11 的...

2017-09-17 09:12:09

阅读数:278

评论数:0

【C/C++开发】STL内嵌数据类型: value_type

使用stl库的时候一直对value_type这个东西理解的不是很好,可以说就是不理解。今天看了《STL源码剖析》才恍然大悟。这里稍作记录。 每个STL中的类都有value_type这种东西,通俗的说value_type 就是stl容器盛装的数据的数据类型,例如: vector vec; ve...

2017-09-15 16:06:28

阅读数:2025

评论数:0

【C/C++开发】C++11的模板类型判断——std::is_same和std::decay

C++11的模板类型判断——std::is_same和std::decay 问题提出:有一个模板函数,函数在处理int型和double型时需要进行特殊的处理,那么怎么在编译期知道传入的参数的数据类型是int型还是double型呢?  如: #include templatetypena...

2017-09-15 16:04:17

阅读数:418

评论数:0

【C/C++开发】模板类

1、模板的概念 我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。 //函数1. int max(int ...

2017-09-15 16:00:04

阅读数:287

评论数:0

【C/C++开发】C++之enum枚举量声明、定义、使用与枚举类详解与枚举类前置类型声明

众所周知,C/C++语言可以使用#define和const创建符号常量,而使用enum工具不仅能够创建符号常量,还能定义新的数据类型,但是必须按照一定的规则进行,下面我们一起看下enum的使用方法。 步骤(一)——枚举量的声明和定义 (1)首先,请看下面的语句: enum enumTyp...

2017-09-15 15:58:12

阅读数:958

评论数:0

【C/C++开发】C++11:左值引用VS右值引用

左值引用VS右值引用 左值引用对于一般的C++程序员再熟悉不过,但对于右值引用(C++0X新特性),就稍微有点不知所云 左值VS右值 在定义变量的时候,经常会用到左值和右值,比如: int a = 1; int b = a + 1; 上面这段代码...

2017-09-15 15:54:18

阅读数:217

评论数:0

【C/C++开发】C++11:右值引用和转发型引用

右值引用 为了解决移动语义及完美转发问题,C++11标准引入了右值引用(rvalue reference)这一重要的新概念。右值引用采用T&&这一语法形式,比传统的引用T&(如今被称作左值引用 lvalue reference)多一个&。 如果把经由T&...

2017-09-15 15:28:34

阅读数:224

评论数:0

【ARM-Linux开发】Makefile 使用总结

Makefile 使用总结 1. Makefile 简介 Makefile 是和 make 命令一起配合使用的. 很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂. Makefil...

2017-09-06 14:02:19

阅读数:257

评论数:0

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