| by msbeta | No comments

C++11多线程-线程休眠(sleep)

C++ 11之前并未提供专门的休眠函数。c语言的sleep、usleep其实都是系统提供的函数,不同的系统函数的功能还有些差异。

在Windows系统中,sleep的参数是毫秒。

在类Unix系统中,sleep()函数的单位是秒。

从C++11开始,中C++标准库提供了专门[……]

继续阅读

Read More
| by msbeta | No comments

C++11新特性-std::tuple

1. 引入头文件

2. std::tuple初始化

这里要注意,不是所有的C++ 11编译器都支持copy-list-initialization的方式。如下代码所示。

3. 打印std::tuple

打印std::tuple可以将它的元素逐个打印出来,不过非常繁[……]

继续阅读

Read More
| by msbeta | No comments

C++11-shared_ptr使用的两个坑

1、禁止使用一个裸指针创建多个智能指针

先看下如下的代码,会有什么样的问题呢?没错,ptr_1和ptr_2均使用裸指针(raw pointer),指向同一块内存,但它们彼此不相知。

当ptr_2作用域结束时,它会delete关联的裸指针(raw pointer),然后ptr_1的指针[……]

继续阅读

Read More
| by msbeta | No comments

C++11多线程-如何用带参数的类成员函数作为线程启动函数

1、使用非静态类成员函数作为线程启动函数

假设存在如下Task类,它有一个名为execute()的非静态成员函数。

现在我们计划用Task的类的成员函数execute()函数作为线程的启动函数。由于execute()是静态函数,为了调用该函数,我们必须首先实例化一个Task对象。

[……]

继续阅读

Read More
| by msbeta | No comments

c++编程之路-decltype关键字

1. decltype关键字的用途是什么

给定变量的名称或者表达式,decltype返回变量或者表达式的类型。如下所示:

2.decltype主要应用场景是模板函数

decltype在实际的开发中主要用于模板函数中,函数的返回值依赖于模板参数类型的情况。如下authAndAcc[……]

继续阅读

Read More
| by msbeta | No comments

C/C++:如何定义和初始化二维数组

在C/C++中有很多定义数组的方式,在日常的应用中也会高频用到,今天一起看看有哪些定义和初始化二维数组的方式。

1、C/C++语言原始数组的方式

数组是C语言的原住民了,在第一代C语言中就已经出现了,在初学者的C/C++的入门书籍中也有详细的介绍。它对二维数组的定义如下:

co[……]

继续阅读

Read More
| by msbeta | No comments

C++11-右值引用作为函数参数

1、普通函数的右值引用参数

假设以右值引用为参数的普通函数的形式如下:

普通函数的右值引用可以接受哪些形式的实参:

1.1 常量表达式作为实参

形参为数值类型的常量的函数定义如下:

以数值常量为实参调用:

形参为字符串类型的常量的函数定义如下:

[……]

继续阅读

Read More
| by msbeta | No comments

C++11新特性-如何为函数输入变长参数(variable arguments)

在C++的实际应用中,我们有时需要定义一个函数,它的参数的个数是不确定。其实在标准的C语言中,就已经支持参数个数可变、参数类型不定的函数参数。

1.C/C++中实现长度可变、类型不定的函数参数

可变参数的实现流程如下。我们知道函数调用过程中参数传递是通过栈来实现的,一般调用都是从右至[……]

继续阅读

Read More
| by msbeta | No comments

C++11新特性-std::any_of

std::any_of是在C++ 11中引入的STL算法。当需要从一系列元素中查找是否存在任意一个元素满足给定条件的时候尤其有用。

1.需要引入头文件

2.函数原型

std::any_of()针对[first, last)之间的所有元素调用pred,任何[……]

继续阅读

Read More