MST

星途 面试题库

面试题:C++ 中如何为自定义容器实现一个简单的正向迭代器

假设你有一个简单的自定义容器类 `MyContainer`,它内部使用 `std::vector<int>` 存储数据。请为这个 `MyContainer` 类实现一个正向迭代器 `MyIterator`,要求迭代器至少实现 `operator*`(解引用)、`operator++`(前置和后置自增)以及比较操作符 `operator==` 和 `operator!=`。
47.5万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>
#include <vector>

class MyContainer {
private:
    std::vector<int> data;
public:
    class MyIterator {
    private:
        std::vector<int>::iterator it;
    public:
        MyIterator(std::vector<int>::iterator iter) : it(iter) {}

        int operator*() {
            return *it;
        }

        MyIterator& operator++() {
            ++it;
            return *this;
        }

        MyIterator operator++(int) {
            MyIterator temp = *this;
            ++it;
            return temp;
        }

        bool operator==(const MyIterator& other) const {
            return it == other.it;
        }

        bool operator!=(const MyIterator& other) const {
            return it != other.it;
        }
    };

    MyIterator begin() {
        return MyIterator(data.begin());
    }

    MyIterator end() {
        return MyIterator(data.end());
    }

    void push_back(int value) {
        data.push_back(value);
    }
};

你可以使用如下方式测试这个类:

int main() {
    MyContainer container;
    container.push_back(1);
    container.push_back(2);
    container.push_back(3);

    for (MyContainer::MyIterator it = container.begin(); it != container.end(); ++it) {
        std::cout << *it << " ";
    }
    std::cout << std::endl;

    return 0;
}