微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以在 C++ 中将类的 2 个对象合并为一个?

如何解决是否可以在 C++ 中将类的 2 个对象合并为一个?

我正在阅读包含

文件
Johh,13,soccer,cricket
Mitchell,14,cricket
Michael,football,cricket,soccer
(all three in separate lines starting from names)

我创建了包含名称、年龄和最喜欢的运动的对象的类。是否可以在 C++ 中将年龄(最喜欢的运动)后的东西组合成一个对象,而不必编写最喜欢的运动 1、最喜欢的运动 2 等。 John 的示例可以是 student.getname() = john、student.getAge() = 13 和 student.getFavSport = Football,cricket。等

真的停留在这部分,从来没有教过,任何帮助将不胜感激谢谢

解决方法

有很多方法可以解决这个问题,因为有很多容器。您可以使用 std::vector,并且有很多关于如何使用它们的教程。

对于这种情况,我建议使用 std::set,它在标头 <set> 中定义。

用法:

#include <set>
#include <string>

struct Student { //I imagine your class looks like this
    std::string name;
    int age;
    std::set<std::string> FavSports;
};

int main() {
    Student MyStudent;
    MyStudent.FavSports.insert("soccer"); //insert
    MyStudent.FavSports.insert("cricket"); //insert
    MyStudent.FavSports.insert("football"); //insert

    bool Exists = MyStudent.FavSports.contains("soccer"); //also can use count() function,which returns 1 or 0. 0 for false,as none exist,1 for true,as one does exist,and a set can have a max of one item of a same type.
    //Ex: a std::set can not contain two "cricket"s.

    auto Iterator = MyStudent.FavSports.find("cricket"); //get a set iterator Iterator that points to cricket

    std::string data = Iterator->data(); //get data of Iterator ("cricket")

    ++Iterator; //point to one forward

    for (std::string Element : MyStudent.FavSports) { //for each element in FavSports
        //do something with each element
    }

    MyStudent.FavSports.insert("football"); //already exists,does nothing

}

您可以根据自己的需要进行调整。更多信息:https://en.cppreference.com/w/cpp/container/set

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。