C++迭代和条件判断

本文是C++学习笔记,介绍了C++中的迭代(包括for语句的两种形式)和条件判断(如switch语句和条件运算符? :)。详细讲解了各语句的工作原理及用法。

C++学习笔记(一):C++础基拾遗

参考文献菜鸟教程和C++primer 第五版(中文)

1、迭代

C++中的迭代语句有while语句、do while语句和for语句。

1.1 for语句

for语句有两种形式:传统for语句和范围for语句。
(1)传统for语句的一般形式如下:

for(init-statemen;condition;expression)
	statement

每个for语句都包含两部分:循环头和循环体。循环头控制循环体的执行次数,它由三个部分组成初始化(init-statemen)、循环条件(condition)、表达式(expression)。循环体(statement)是一条语句或者语句块。
其中,初始化只执行一次;每次循环前判断循环条件,若满足则执行一次循环体,不满足则退出循环;每次循环体执行完成后执行表达式。

for(i=0;i<Number;i++)
{
   
   
    //执行语句
}

for循环头的三个语句可进行多重定义,也可部分省略(或全部)使用空语句。当然要保证循环的正常运行,可以在循环体内补充循环条件。

forint i=0
### C++迭代器的使用方法与示例 #### 1. 迭代器的概念 迭代器是一种用于访问容器中元素的对象,类似于指针。它允许程序员通过统一的方式遍历不同类型的容器(如 `vector`、`list` 或 `map`)。迭代器的主要功能是提供一种通用机制来访问集合中的对象而不暴露其内部表示[^3]。 #### 2. 基本语法与用法 以下是使用迭代器的基本方式: - **初始化**:创建一个指向容器起始位置或结束位置的迭代器。 - **遍历**:利用循环结构(如 `for` 循环)逐步移动迭代器以访问容器内的每一个元素。 - **操作**:解引用迭代器可以获取当前所指向的元素值。 以下是一个完整的例子,展示如何使用迭代器遍历 `std::vector<int>` 并打印其中的内容: ```cpp #include <iostream> #include <vector> int main() { std::vector<int> vec = {1, 2, 3, 4, 5}; // 初始化迭代器 for (std::vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) { std::cout << *it << " "; // 解引用迭代器并输出元素 } return 0; } ``` 此代码片段展示了如何定义一个迭代器变量,并通过自增运算符 (`++`) 移动到下一个元素的位置[^1]。 #### 3. 不同类型的迭代器及其特性 C++ STL 提供了五种主要的迭代器类别,每种都有特定的功能约束条件[^5]: - **输入迭代器(Input Iterator)**:只读访问,支持单向前进操作。 - **输出迭代器(Output Iterator)**:只写访问,同样仅能向前推进。 - **前向迭代器(Forward Iterator)**:可多次读取同一数据项,具备输入迭代器的所有能力。 - **双向迭代器(Bidirectional Iterator)**:除了能够执行前向迭代外,还支持反向迭代(即可以通过 `--` 减少索引)。 - **随机访问迭代器(Random Access Iterator)**:提供了更强大的功能集,包括跳跃任意距离的能力以及算术运算的支持。 注意,在某些情况下尝试非法比较两个迭代器可能导致未定义行为。例如,对于非随机访问型迭代器来说,直接使用 `<` 来判断顺序并不总是有效[^4]。 #### 4. 实际应用场景举例 假设我们需要找到某个整数数组的最大值,则可以用如下函数实现: ```cpp template<typename Iter> typename std::iterator_traits<Iter>::value_type findMax(Iter begin, Iter end){ typename std::iterator_traits<Iter>::value_type maxVal = *begin; while (++begin != end){ if (*begin > maxVal){ maxVal = *begin; } } return maxVal; } // 调用该模板函数处理 vector 数据 std::vector<int> data = {7, 89, 6, -3}; auto maxValue = findMax(data.begin(), data.end()); std::cout << "Maximum value is: " << maxValue << "\n"; ``` 上述程序段落里我们定义了一个泛化版本寻找最大数值的方法,适用于任何拥有合适迭代器接口的数据序列[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值