溫馨提示×

如何在C++中使用set和get與運算符重載結(jié)合

c++
小樊
81
2024-09-25 01:44:15
欄目: 編程語言

在C++中,你可以通過重載運算符來實現(xiàn)與set和get的結(jié)合。下面是一個示例:

#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內(nèi)容的輔助函數(shù)
    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;
}

在這個示例中,我們創(chuàng)建了一個名為MyClass的類,它包含一個std::set<std::string>類型的私有成員變量mySet和一個std::string類型的私有成員變量myString。我們重載了<<運算符,使其能夠?qū)⒆址迦氲?code>mySet中。同時,我們還重載了[]運算符,使其能夠根據(jù)索引返回mySet中的元素。最后,我們在main函數(shù)中展示了如何使用這個類。

0