Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何实现类似电话簿的应用程序_C++_Algorithm_Data Structures - Fatal编程技术网

C++ 如何实现类似电话簿的应用程序

C++ 如何实现类似电话簿的应用程序,c++,algorithm,data-structures,C++,Algorithm,Data Structures,我有一个问题,需要将数据存储在用户的内存中。这个结构包含用户名和电话号码,我必须为100万用户存储它。现在,在检索时,如果用户名作为输入,那么它应该返回电话号码,如果电话号码作为输入,那么它应该返回用户名。当我在检索速度和存储方面需要优化复杂性时,什么样的数据结构才能实现这一点。试试boost::bimap。 这是一个双向映射(一切都是一个键,也是一个值) 我认为它是通过两个映射实现的,不过请注意内存使用情况。试试leveldb,在那里可以以键和值对的形式存储数据。试试数据库。它们确实有效。@

我有一个问题,需要将数据存储在用户的内存中。这个结构包含用户名和电话号码,我必须为100万用户存储它。现在,在检索时,如果用户名作为输入,那么它应该返回电话号码,如果电话号码作为输入,那么它应该返回用户名。当我在检索速度和存储方面需要优化复杂性时,什么样的数据结构才能实现这一点。

试试
boost::bimap
。 这是一个双向映射(一切都是一个键,也是一个值)


我认为它是通过两个映射实现的,不过请注意内存使用情况。

试试leveldb,在那里可以以键和值对的形式存储数据。

试试数据库。它们确实有效。@FrédéricHamidi我必须将其存储在内存中。我会尝试使用两个
std::map
s,其中包含指向包含实际数据的
struct
type对象的指针。您需要编写自己的比较器,根据指向的用户名或指向的电话号码对每个地图的键进行排序。我可能会把这些都放在自己的类中。@paper.plane@paper.plane老实说,这闻起来像是家庭作业,但无论如何,使用简单的索引查找手机nr可能不是你的目标,不管它是手工实现的还是某种DB;你可能想看看