c++11

1.   

数组,字符串,结构体声明初始化可以使用大括号

double arr[4] {1.2, 3, 3.5, 5};

string thirdstr {“hello world”};

struct inflatable {

  string name;

flaot volume;

};

inflatable guest{“nihao”, 0.12};

2.     

新增std::array

std::array<int, 5> ai;

数据存储在栈中,和int ai[5]一样。

vector<int> ai 数据存储在堆中,(new出的内存)

3.   

基于范围的for循环

std::vector<int> vc{ 6,7,8,9,10 };

for (intx : vc) {

        printf("%d\n", x);

}

for (auto & x : vc) { //引用的方式

        printf("%d\n", x);

}

循环数组,容器类(array,vector,map等)

4.     

thread_loacl变量,每个线程拥有独立的副本,不会相互影响。

5.   

auto 被用作类型推断,不再当做自动变量;register显示的之处变量是自动的,不再表明变量是寄存器存储,保留是为了兼容性。nullptr:新增空指针表示

6.   

类枚举

enum class egg { Small, Medium, Large, Jumbo}

egg e = egg::Large

底层实现为int

7.     

智能指针:auto_ptr:赋值操作导致转移指针所有权a=b,b丢失所有权,再使用b将出错

share_ptr:赋值操作共享所有权,通过引用计数方式管理内存释放

unique_ptr:编译阶段禁止赋值操作,临时右值除外;当需要转移所有权时,通过std::move来操作

8.

有序容器map,set等数据结构用的红黑树树,C++11中无序容器(unordered_set)用的hash

9.

委托构造函数,将自己的构造函数委托给其他构造函数执行初始化过程。

class A {

A(int)();

A(string, int):A("dd",int){}

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容