gpt4 book ai didi

c++ - 帮助在 C++ 的 STL 上设置和映射

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:00:57 25 4
gpt4 key购买 nike

我正在上 CS 课,大部分作业都是用 Java 编写的。在上一个 Java 作业中,我们学习了集合。这个作业我们使用的是 C++,我需要学习 STL所需的书都是用java编写的。我们得到了这个网页 http://www.cplusplus.com/但是,那个和谷歌不会让我完成任务。你能推荐一本关于STL和c++的好书吗?我主要需要了解 set 和 map。

这个作业是关于一个媒体库(书籍、cd、dvd 信息)

我们得到了一个可以使用的框架程序,在图书馆类(class)中,我不确定布景和 map 实际上是什么,关于书籍、CD、DVD 信息的内容……?有人可以根据功能告诉我什么设置/映射吗?

typedef set<Item*>             ItemSet;
typedef map<string,Item*> ItemMap;
typedef map<string,ItemSet*> ItemSetMap;

class Library
{

public:
// general functions

void addKeywordForItem(const Item* const item, const string& keyword);
const ItemSet* itemsForKeyword(const string& keyword) const;
void printItem(ostream& out, const Item* const item) const;

// book-related functions

const Item* addBook(const string& title, const string& author, int const nPages);
const ItemSet* booksByAuthor(const string& author) const;
const ItemSet* books() const;

// music-related functions

const Item* addMusicCD(const string& title, const string& band, const int nSongs);
void addBandMember(const Item* const musicCD, const string& member);
const ItemSet* musicByBand(const string& band) const;
const ItemSet* musicByMusician(const string& musician) const;
const ItemSet* musicCDs() const;

// movie-related functions

const Item* addMovieDVD(const string& title, const string& director, const int nScenes);
void addCastMember(const Item* const movie, const string& member);
const ItemSet* moviesByDirector(const string& director) const;
const ItemSet* moviesByActor(const string& actor) const;
const ItemSet* movies() const;
};

最佳答案

好的,关键问题是你需要支持哪些操作。这些操作决定了您应该使用哪种数据结构。

例如,对于您拥有的书籍:

const Item* addBook(const string& title, const string& author, int const nPages);
const ItemSet* booksByAuthor(const string& author) const;
const ItemSet* books() const;

这意味着您需要书籍集:所有书籍和作者。因此,您需要一个映射,将作者映射到具有该作者的书籍集。

您的函数可能如下所示:

ItemSet allBooks;
ItemSetMap allBooksByAuthor;
...

const Item* addBook(const string& title, const string& author, int const nPages)
{
BookItem* item = new BookItem(...);
allBooks.insert(item); // add to set of all books
allBooksByAuthor[author].insert(item); // add to set of books by this author
return item;
}

const ItemSet* booksByAuthor(const string& author) const
{
return allBooksByAuthor[author];
}

const ItemSet* books() const
{
return allBooks;
}

关于c++ - 帮助在 C++ 的 STL 上设置和映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2322748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com