gpt4 book ai didi

c++ - 对自制类对象进行不区分大小写的排序

转载 作者:太空宇宙 更新时间:2023-11-04 13:05:07 24 4
gpt4 key购买 nike

我创建了一个名为 Person 的类,由其他类作为 Name 和 Adress 组成。 Person 类的对象存储在一个名为 personList 的 vector 中。一切正常,但我的排序方法!

我需要能够按字母顺序对 vector 进行排序,首先按名称排序,如果名称相似,则按地址排序。我现在的问题是无论如何我都想不出要使搜索不区分大小写。

将不胜感激任何帮助!我刚开始学习 C++。

这是我的排序函数的代码:

 bool sortByName(const Person & lhs, const Person & rhs)
{
if (lhs.getName() == rhs.getName())
return lhs.getAdress() < rhs.getAdress();
else
return lhs.getName() < rhs.getName();
}

最佳答案

正确的方法是执行 operator<()对于 Person而不是你的 sortByName()常规:

bool operator<(const Person& lhs, const Person& rhs)
{
...
}

从那里您可以使用各种技术来比较您的两个 Person对象,只要ordering is always the same .参见 Case insensitive string comparison in C++对于一种解决方案。

转换任意字符串的大小写非常复杂(甚至可能是边界线不可能),如果您想在所有情况下(例如任何语言)正常工作。您可以通过不区分大小写的比较而不是转换 来回避其中的一些问题;但仍然存在很多问题。有了“仅限英语”或“仅限 ASCII 字符”等附加限制,这就容易多了。

关于c++ - 对自制类对象进行不区分大小写的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42812436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com