前言
C++11在如今的公司开发过程中,C++11的代码形式和一些优秀的开源代码中,都会使用到C++11的一些特性,使得代码更加简洁,逻辑更加清楚。
C++11的新标准很多,但是对于开发者来说,我们不一定会都使用到,本文主要总结一下之前的编码过程中高频出现的的内容。
关键字与语法方面
auto
:可以根据右值,推导出右值的类型,然后左边变量的类型也就已知了nullptr
:给指针专用(能够和整数进行区别)以前的NULL是一种宏定义,即#difine NULL 0
,我们在代码中其实是无法区分整数和地址,有了nullptr就方便了我们的区分。foreach
:可以遍历数组,容器等(底层通过指针或者迭代器来实现)
for(Type val: container)
{
cout << val << " ";
}
右值引用
:move移动语义函数和forward类型完美转发函数模板的一个新特性
:typename… A表示可变参(类型参数)
绑定器和函数对象
这一部分读者可以查看我之前的博客:
function
:函数对象bind
:绑定器 bind1st和bind2nd + 二元函数对象 ==>一元函数对象- lambda表达式
智能指针
shared_ptr
和weak_ptr
容器
set
和map
:红黑树O(log2n)
unordered_set
和unordered_map
:哈希表O(1)
array
:数组 vector
forward_list
:前向链表 list
C++语言级别支持的多线程编程
这一部分请关注我的下一篇博客。
- 代码可以跨平台运行
- thread/mutex/condition_variable
- lock_quard/unique_lock
- atomic:原子类型,基于CAS操作的原子类型,线程是安全的
- sleep_for