我是链接列表的新手,我将制作电话簿程序。我需要将联系人信息存储在链接列表中:姓氏,名字,街道地址,城市,州,邮政编码和电话号码。但是在我将它们存储在列表中后,我想按姓氏对每个联系人进行排序。我不确定我是应该创建标准链表类还是创建链表模板? 编辑:我需要使用链接列表进行分配。我不明白链表。我认为手动创建它有助于我的理解。
答案 0 :(得分:1)
根据我的理解,没有必要(除非出于兴趣或特殊要求)手动实施链表,因为它已经包含在标准库中,如文档here所示;显然,排序也已实施。
答案 1 :(得分:0)
链接列表对于电话簿来说不是一个好选择。您可能希望对列表进行排序以便更快地进行查找,但由于缺少随机访问迭代器,链表仍需要O(n)。我的建议是使用std::vector
或实现类似的东西,如果你想学习如何去做。
答案 2 :(得分:0)
首选std::list
。它存在,经过充分测试,已经提供了sort()
方法:
auto l = std::list<Contact>{};
// fill list
l.sort([](const Contact& first, const Contact& second){
return std::less(first.lastName, second.lastName);
});
根据经验,大部分时间使用标准模板比尝试重新发明轮子更好。
BTW:重新考虑,如果链表确实是满足您需求的最佳容器。有时是,但通常不是。