#include <iostream>
#include <vector>
#include <string>

// 構造体の定義
struct MyStruct {
    std::string name;
    std::string description;
};

class MyClass {
public:
    // vectorを参照渡しで変更するメソッド
    void modifyVector() {
        // vectorの要素を変更する例として、全てのdescriptionに"_updated"を追加する操作を行う
        for (MyStruct& item : items_) {
            item.description += "_updated";
        }
    }

    // vectorの要素を追加するメソッド
    void addItem(const MyStruct& item) {
        items_.push_back(item);
    }

    // vectorの内容を表示するメソッド
    void displayItems() const {
        for (const MyStruct& item : items_) {
            std::cout << "Name: " << item.name << ", Description: " << item.description << std::endl;
        }
    }

private:
    std::vector<MyStruct> items_;
};

int main() {
    MyClass myClass;

    // MyClassのメソッドを使ってvectorに要素を追加
    myClass.addItem({"item1", "description1"});
    myClass.addItem({"item2", "description2"});
    myClass.addItem({"item3", "description3"});

    std::cout << "Before modification:" << std::endl;
    myClass.displayItems();

    // MyClassのメソッドを使ってvectorを変更
    myClass.modifyVector();

    std::cout << "After modification:" << std::endl;
    myClass.displayItems();

    return 0;
}