请注意,这个问题仅与 C++ 有关,我对使用现有数据库不感兴趣,也不是在寻求“c++ 中的数据库”的通用解决方案。我有一个具体的问题,并且正在寻求以下问题的最有效(在时间、空间和最佳实践方面)的解决方案。
假设我有一系列书籍,由Id
、ISBN
、Author
和描述Name
。该Name
列将是一个与单独的作者表相关的 ID,其中包含列Id
、Surname
、First Name
。我希望能够按姓名和作者进行有效搜索。我将如何构建它,以及我将使用哪些容器?
这个话题已经在SO和其他地方多次提出,但从来没有专门与 C++ 或不使用现有库的实现相关的答案。
天真的解决方案是简单地创建 2 个单独的类:Author
和Book
:
class Book
{
public:
int id;
std::string isbn;
Author* author;
std::string name;
};
class Author
{
public:
int id;
std::string surname;
std::string givenName;
};
然后我可以创建 Book 和 Author 的向量(指针)。但是我将如何有效地索引这些?假设我想通过 ISBN 查找一本书;我怎样才能在恒定或至少对数时间内做到这一点?这可能吗?这类问题有标准做法吗?