我是个链表新手,我会做一个电话簿程序。我需要将联系人信息存储在一个链表中:姓、名、街道地址、城市、州、邮政编码和电话号码。但在我将它们存储到列表中之后,我想要按姓氏对每个联系人进行排序。我不确定我应该创建一个标准的链表类还是一个链表模板?编辑:我需要对我的作业使用链表。我对链表的理解不是很好。我认为手动创建它将有助于我的理解。
发布于 2015-12-01 20:55:37
据我所知,应该没有必要(除非出于兴趣或特殊要求)手动实现链表,因为它已经包含在标准库中,如文档here所示;显然还实现了排序。
发布于 2015-12-01 20:58:55
对于电话簿来说,链表不是一个好的选择。您可能希望对列表进行排序以获得更快的查找速度,但是由于缺少随机访问迭代器,链表仍然需要O(n)。我的建议是,如果你想学习如何做到这一点,可以使用std::vector或实现类似的东西。
发布于 2015-12-01 20:58:59
更喜欢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);
});根据经验,大多数情况下,最好使用标准模板,而不是尝试重新发明轮子。
顺便说一句:如果链表真的是满足您需求的最佳容器,请重新考虑。有时是这样,但通常不是这样。
https://stackoverflow.com/questions/34020910
复制相似问题