C++的大坑

https://www.eet-china.com/mp/a49223.html

 

C++的大坑

 

 

 

无符号整数的错误使用

for (unsigned int i = 10; i >= 0; --i) { ... }

上面这段代码会发生什么? 会死循环,这里要注意下无符号整数的使用。

 

容器的size()返回类型是无符号整数

std::vector<int> vec;
vec.push_back(1);
for (auto idx = vec.size(); idx >= 0; idx--) {    
    cout << "===== \n";
}

 

memcpy、memset只适用于POD结构. 

什么事pod 结构 就是很结构很存粹。 自己理解吧。   https://blog.csdn.net/Jxianxu/article/details/80524526       https://zhuanlan.zhihu.com/p/45545035

 

STL遍历删除时注意迭代器失效问题   

   https://www.cnblogs.com/zhangkele/p/10538144.html 字节博客的 

容器分为三类  数组类型  链表类型  关联容器类型 失效的情况也不统一 注意细节

 

std::list排序使用自己的成员方法    一般的容器排序都使用std::sort(),但是list特殊。

int main() {
 std::list<int> list{1, 2, 3, 2};
 list.sort(); //
 //sort(list.begin(), list.end());  // 容器中list 是有两种排序算法 但是输入 一种是默认的 一种是 函数对象或者 lambda   但是不是类似其他容器那样传入 迭代器 看下面的链接去吧
 for (auto i : list) {
    std::cout << i << " ";
 }
 std::cout << "\n";
 return 0;
}
   
https://blog.csdn.net/baidu_35679960/article/details/79592318  //看这个链接

 

基类析构函数要是虚函数

如果不是虚函数的话,可能会有内存泄漏的问题 项目中真实的踩过坑哈  要注意呀

 

new/delete、new[]/delete[]、malloc/free严格配对

 

成员变量初始化  

成员变量没有默认初始化行为,需要手动初始化。   这个也踩过坑 要自己初始化 不要依赖编译器  

 

不要返回局部变量的指针或引用 

 常见问题哈 没什么好说的 

 

vector clear和swap问题    首先要理解这两个api 最终带来的结果是什么 尤其是  clear 会改变什么   clear 并不会释放我们的内存空间 只会改变容器的 size 并不会改变 capctive 容量

 

https://blog.csdn.net/wangshubo1989/article/details/50359750

 

上一篇:C++ std::remove和std::remove_if


下一篇:海量数据查重问题解决方案