c++

如何在C++中使用set和get与运算符重载结合

小樊
87
2024-09-25 01:44:15
栏目: 编程语言

在C++中,你可以通过重载运算符来实现与set和get的结合。下面是一个示例:

#include <iostream>
#include <set>
#include <string>

class MyClass {
private:
    std::set<std::string> mySet;
    std::string myString;

public:
    // 重载set运算符
    MyClass& operator<<(const std::string& value) {
        mySet.insert(value);
        return *this;
    }

    // 重载get运算符
    std::string operator[](size_t index) const {
        if (index < mySet.size()) {
            size_t counter = 0;
            for (const auto& item : mySet) {
                if (counter == index) {
                    return item;
                }
                ++counter;
            }
        }
        throw std::out_of_range("Index out of range");
    }

    // 用于展示set内容的辅助函数
    void displaySet() const {
        for (const auto& item : mySet) {
            std::cout << item << std::endl;
        }
    }
};

int main() {
    MyClass obj;
    obj << "apple" << "banana" << "orange";
    obj.displaySet();

    try {
        std::cout << "Element at index 1: " << obj[1] << std::endl;
    } catch (const std::out_of_range& e) {
        std::cerr << e.what() << std::endl;
    }

    return 0;
}

在这个示例中,我们创建了一个名为MyClass的类,它包含一个std::set<std::string>类型的私有成员变量mySet和一个std::string类型的私有成员变量myString。我们重载了<<运算符,使其能够将字符串插入到mySet中。同时,我们还重载了[]运算符,使其能够根据索引返回mySet中的元素。最后,我们在main函数中展示了如何使用这个类。

0
看了该问题的人还看了