- 博客(5)
- 收藏
- 关注
原创 使用nullptr代替0或者NULL(effective Modern C++ Item 8)
理由一:使用nullptr代替0或者NULL可以避免重载函数的意外事件,例如void fun(int a) { std::cout << "int"; }void fun(void* ptv) { std::cout << "void*"; }int main(){ fun(0); fun(NULL); fun(nullptr);}输出结果 可以看出nullptr没有整数类型,而NULL拥有整数类型,导致调用了第一个函数,使用nullptr可以...
2022-03-23 10:38:49
1237
原创 Modern Effective C++ Item7 阅读笔记
Item 7:在定义变量时,需要区分()和 { } 的作用。要点一:{}是最广泛应用的初始化语法,可以避免收缩转换,避免绝大部分的变量错误定义。以下是两个例子体现{}的作用。(1).定义不可拷贝的变量时,可以采用{},()来赋值;当采用“=”赋值时会出错std::atomic<int> a = 1;//errorstd::atomic<int> a(1);//finestd::atomic<int> a{1};//fine(2).使用{}定义变量
2022-03-18 15:27:47
484
原创 C++ 关联容器和顺序容器删除元素(erase)时的内部细节
开发中对容器进行删除操作十分常见,本文列举关联容器和顺序容器进行删除操作的常见问题以及内部细节。1.set 删除操作以下代码会出现错误,通过debug可以看到iter在erase后指向end,也就是迭代器在erase函数中将作为引用参数传入函数中,此时迭代器将直接指向容器的最末端。set<int>setvec = { 1,2,3 }; for (auto iter = setvec.begin(); iter != setvec.end(); iter++) { setve
2022-03-14 18:19:57
2454
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人