【发布时间】:2017-10-15 22:53:58
【问题描述】:
这里曾经问过的第一个问题。我尝试过使用 Boost,但无法弄清楚它如何与我的结构一起工作。另外,即使在将其添加到其他库等之后,.lib 缺失错误也会不断发生。就像它在几次运行中工作一样,然后又突然出现。第一次通过创建一个新项目来解决它,但我没有时间继续这样做。
无论如何,我已将代码从 Visual Studio 移至 QT Creator。现在我正在阅读一些关于 XML 或 JSON 的内容,并考虑是否应该尝试实现它?
问题是我有一整天的时间来解决我明天到期的最终项目的序列化问题。一旦我有了这个,我需要制作一个我希望会更容易的 GUI。提前致谢。以下是我使用 Boost 的最佳尝试
Hotel.h
class guestBook {
protected:
friend class roomBook;
friend class hashMap;
struct guest {
int guestKey;
string firstName;
string lastName;
guest *next;
template<class Archive>
void serialize( Archive & ar )
{
ar( guestKey, firstName, lastName);
}
};
guest* guestHashTable[tableSize];
public:
void writeGuestTable();
void readGuestTable();
void addGuest(string firstName, string lastName);
int numberOfItemsInBucket(int index);
void retrieveGuestID();
};
guestBook.cpp
void hashMap::writeGuestTable() {
for(int x=0;x<tableSize;x++){
guestHashTable[x] = new guest;
guestHashTable[x]->guestKey = 0;
guestHashTable[x]->firstName = "empty";
guestHashTable[x]->lastName = "empty";
}
ofstream os("guestTable.txt", ios::binary);
cereal::BinaryOutputArchive archive( os );
guest myData;
archive( myData );
}
【问题讨论】:
-
欢迎来到 Stack Overflow。请花时间阅读The Tour 并参考Help Center 中的材料,您可以在这里问什么以及如何问。
-
你为什么要滚动你自己的 hashmap 结构?尝试使用标准库中的容器,例如
std::map。这将为您节省大量调试时间并避免重新发明轮子。 -
@tadman 我的导师让我们对自己的哈希图结构进行硬编码,所以我关注了一些 youtube 视频。这给了我将它延续到我的最终项目的想法,但你可能是对的,也许使用 std 库会使事情变得更容易。我只需要花一点时间来学习它。你会为我上面的结构推荐 std::map 吗?
-
如果您正在制作查找表,
std::map就是您想要的。根据您的需要,还有许多其他具有不同属性的容器。如果您出于学术原因滚动自己的实现,请查看标准库如何定义接口。地图本身和它所包含的数据之间通常会分离关注点,从而简化您的设计。使std::map工作相似具有教育意义,因为您有一个工作参考实现可供比较。 -
@RyanNguyen 我的导师让我们硬编码自己的 hashmap 结构 -- 然后你应该写一个通用的,而不是硬连线到你的
guestBook结构中。
标签: c++ visual-studio qt serialization boost