C++ STL操作陷阱:删除map并避坑
需积分: 9 179 浏览量
更新于2024-07-13
收藏 500KB PPT 举报
本文档主要介绍了在C++ STL标准库操作中可能遇到的一些陷阱和需要注意的事项。首先,关于条件删除map表的部分,作者给出了一个示例代码片段,展示了如何使用`std::list<int>`容器中的迭代器`iter`来删除大于10的元素。使用`eraser()`方法,当找到满足条件的元素时,迭代器会被递增并移除对应的元素。
1. **局部变量和全局变量重名问题**:
当局部变量和全局变量同名时,C++编译器会优先使用局部变量。在函数内部引用该名称时,会使用局部变量而不是全局变量。如代码所示,`intval`在两个函数中的行为不同,强调了使用`::`前缀来明确访问全局变量的重要性。
2. **运算符优先级**:
面试题中常常涉及运算符优先级的问题,例如`i+++j`的解析。实际上,自增运算符`++`在表达式中具有较高的优先级,所以`k`会被设置为`(i++) + j`。面试者可能会被要求分析这类操作的执行效率,但在实际开发中,这类细节通常不需过多关注。
3. **宏定义**:
宏定义是C/C++中的一种预处理器指令,用于文本替换。然而,宏定义容易出错,需要注意以下几点:
- 宏定义格式必须正确,无分号,且首字母大写,如`#define PPPP123`是错误的。
- 括号匹配也很关键,如`#define SQR(x)(x*x)`,括号应该正确嵌套以确保函数调用的正确性。
- 宏定义的使用场景,如计算一年的秒数或求最大值,可以通过宏进行简化,但应避免过于复杂的逻辑,如`((a+b)+abs(a-b))/2`,更推荐直接使用比较运算符。
这篇文章旨在帮助读者理解在C++ STL操作中避免常见陷阱,掌握正确的命名规则、运算符优先级处理以及安全地使用宏定义。在面试时,对这些问题的熟悉度有助于展示编程基础扎实和严谨的编程习惯。
2021-09-30 上传
2009-06-25 上传
2018-09-26 上传
2021-07-14 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
2024-12-31 上传
简单的暄
- 粉丝: 26
- 资源: 2万+
最新资源
- 硬盘高级维修技巧硬盘维修整理资料汇总
- Foundations Of Qt Development (英文/PDF)
- 让你的ADSL开机自动拨号
- 软件开发项目计划(实践)
- C#设计模式(word文档)
- flex事件机制详解
- text_porcess_in_python
- data mining and KDD: promise and challenges
- flex cookbook中文
- 事业单位考试绝密资料
- AJAX开发框架GWT
- Serial Port Complete-COM Ports, USB Virtual COM Ports, and Ports for Embedded Systems, 2nd Edition.pdf
- java 的面试试题
- 埃特梅尔AT89S52 单片机 参数资料
- § 1.2 Java的 特 点
- 线性代数(同济四版)习题答案