C++ Primer:深度解析迭代器iterator的使用

需积分: 16 4 下载量 83 浏览量 更新于2024-09-12 收藏 38KB DOC 举报
"C++迭代器的使用方法及示例" 在C++编程中,迭代器(iterator)是访问容器内元素并遍历元素的关键工具。它提供了类似指针的行为,但功能更为强大,允许程序员在不暴露容器内部结构的情况下操作其元素。下面是关于C++迭代器的详细讲解: 1. 迭代器类型: - 每个容器(如vector、list、set等)都有与其对应的迭代器类型。例如,对于vector<int>,其迭代器类型为`vector<int>::iterator`。声明迭代器变量时,我们通常会用`begin()`和`end()`函数来初始化,分别代表容器的起始和结束位置。 ```cpp vector<int>::iterator iter; // 定义一个迭代器 iter = ivec.begin(); // 初始化为容器的第一个元素 while (iter != ivec.end()) { // 遍历容器 // ... 操作 *iter ++iter; // 移动到下一个元素 } ``` 2. 只读迭代器(`const_iterator`): - `const_iterator`用于只读访问容器元素,不允许修改。尝试修改元素会导致编译错误。 ```cpp for (vector<int>::const_iterator citer = ivec.begin(); citer != ivec.end(); citer++) { cout << *citer; // 输出元素 // *citer = 3; // 错误:不能修改元素 } ``` 3. `const`与非`const`迭代器的区别: - `const vector<int>::iterator`虽然看起来像是只读,但实际上可以修改它所指向的元素,但不能改变迭代器自身的位置。 - 而`const vector<int>::iterator newiter = ivec.begin();`创建的迭代器,即使指向的是常量容器,仍可以修改元素,但不能通过`++`或`--`操作移动迭代器。 4. 迭代器的算术操作: - 迭代器支持算术操作,如`+`、`-`,以及`+=`、`-=`。这允许我们快速移动到容器的特定位置,或者计算两个迭代器之间的距离。 ```cpp const vector<int>::iterator newiter = ivec.begin(); vector<int>::iterator newiter2 = ivec.end(); cout << "\n" << newiter2 - newiter; // 输出两个迭代器间的元素数量 ``` 5. 使用迭代器的STL程序示例: - 下面是一个简单的例子,展示了如何使用迭代器向vector添加元素并遍历输出。 ```cpp #include <vector> #include <iostream> int main() { vector<int> ivec; ivec.push_back(1); ivec.push_back(2); // 使用迭代器遍历并输出 for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); iter++) { cout << *iter << " "; } return 0; } ``` C++的迭代器是访问容器元素的重要手段,它提供了灵活且安全的方式遍历和操作容器中的数据。在使用过程中,了解不同类型的迭代器以及它们的操作规则,可以帮助编写更高效、更安全的代码。在实际编程中,结合容器和迭代器可以充分利用C++标准库提供的各种算法,提高程序的可读性和效率。