C++ 如何实现类似电话簿的应用程序
我有一个问题,需要将数据存储在用户的内存中。这个结构包含用户名和电话号码,我必须为100万用户存储它。现在,在检索时,如果用户名作为输入,那么它应该返回电话号码,如果电话号码作为输入,那么它应该返回用户名。当我在检索速度和存储方面需要优化复杂性时,什么样的数据结构才能实现这一点。试试C++ 如何实现类似电话簿的应用程序,c++,algorithm,data-structures,C++,Algorithm,Data Structures,我有一个问题,需要将数据存储在用户的内存中。这个结构包含用户名和电话号码,我必须为100万用户存储它。现在,在检索时,如果用户名作为输入,那么它应该返回电话号码,如果电话号码作为输入,那么它应该返回用户名。当我在检索速度和存储方面需要优化复杂性时,什么样的数据结构才能实现这一点。试试boost::bimap。 这是一个双向映射(一切都是一个键,也是一个值) 我认为它是通过两个映射实现的,不过请注意内存使用情况。试试leveldb,在那里可以以键和值对的形式存储数据。试试数据库。它们确实有效。@
boost::bimap
。
这是一个双向映射(一切都是一个键,也是一个值)
我认为它是通过两个映射实现的,不过请注意内存使用情况。试试leveldb,在那里可以以键和值对的形式存储数据。试试数据库。它们确实有效。@FrédéricHamidi我必须将其存储在内存中。我会尝试使用两个
std::map
s,其中包含指向包含实际数据的struct
type对象的指针。您需要编写自己的比较器,根据指向的用户名或指向的电话号码对每个地图的键进行排序。我可能会把这些都放在自己的类中。@paper.plane@paper.plane老实说,这闻起来像是家庭作业,但无论如何,使用简单的索引查找手机nr可能不是你的目标,不管它是手工实现的还是某种DB;你可能想看看