
C++
C# 中的 IEnumerable
cpp#include <IOStream>#include <vector>int mAIn() { std::vector<int> numbers = {1, 2, 3, 4, 5}; // 使用迭代器遍历容器 for (auto it = numbers.begin(); it != numbers.end(); ++it) { std::cout << *it << " ";</p> } return 0;}在上面的代码中,我们首先创建了一个包含整数的向量 numbers。然后,我们使用 numbers.begin() 方法获取迭代器指向容器的起始位置,使用 numbers.end() 方法获取迭代器指向容器的末尾位置。接下来,我们使用 for 循环和自增运算符来移动迭代器,并通过解引用运算符 *it 来获取迭代器指向的元素的值。最后,我们将元素的值打印到控制台上。通过这种方式,我们可以使用迭代器来遍历不同类型的容器,包括数组、链表、集合等。迭代器提供了一种通用的方法,使我们能够以一种统一的方式处理不同类型的容器。使用自定义迭代器除了使用标准库提供的迭代器外,我们还可以自定义迭代器来实现特定的功能。通过自定义迭代器,我们可以为容器添加自定义的遍历方式,或者遍历容器中的特定元素。让我们以一个自定义的迭代器示例来说明这个概念。假设我们有一个自定义的链表类 LinkedList,我们想要实现一个迭代器,用于遍历链表中的元素。代码如下:cpp#include <IOStream>class Node {public: int data; Node* next; Node(int data) { this->data = data; this->next = nullptr; }};class LinkedList {private: Node* head; Node* tAIl;public: LinkedList() { this->head = nullptr; this->tAIl = nullptr; } // 添加元素到链表 void add(int data) { Node* newNode = new Node(data); if (head == nullptr) { head = newNode; tAIl = newNode; } else { tAIl->next = newNode; tAIl = newNode; } } // 自定义迭代器 class Iterator { private: Node* current; public: Iterator(Node* node) { this->current = node; } // 迭代器的自增运算符 Iterator& operator++() { current = current->next; return *this; } // 迭代器的解引用运算符 int operator*() const { return current->data; } // 迭代器的比较运算符 bool operator!=(const Iterator& other) const { return current != other.current; } }; // 获取链表的起始迭代器 Iterator begin() { return Iterator(head); } // 获取链表的末尾迭代器 Iterator end() { return Iterator(nullptr); }};int mAIn() { LinkedList list; list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); // 使用自定义迭代器遍历链表 for (auto it = list.begin(); it != list.end(); ++it) { std::cout << *it << " ";</p> } return 0;}在上面的代码中,我们首先定义了一个链表类 LinkedList,其中包含一个内部类 Iterator。Iterator 类用于表示链表中的迭代器,它包含一个指向当前节点的指针 current。我们在 Iterator 类中重载了自增运算符 ++、解引用运算符 * 和比较运算符 !=。然后,我们在 LinkedList 类中定义了 begin() 和 end() 方法,用于获取链表的起始迭代器和末尾迭代器。在主函数中,我们创建了一个链表对象 list,并使用 add() 方法向链表中添加元素。接下来,我们使用自定义的迭代器遍历链表,并将元素的值打印到控制台上。通过自定义迭代器,我们可以实现对容器的灵活遍历,并且可以根据实际需求定义特定的迭代方式。尽管 C++ 中没有与 C# 中的 IEnumerableCopyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号