在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
函数中展示了如何使用这个类。