我想知道如何对字符串向量进行排序,使得字符数最少的字符串位于向量的顶部。例如,如果矢量中有ABCD,ABCDE,ABC。美国广播公司获得第一名。我有兴趣知道如何通过sort_if实现这一点,以及谓词是什么样的?任何其他方法,也欢迎基于字符串大小对字符串向量进行排序
回答
让自己的自定义函数对象来比较字符串(S)的大小,并用它来排序字符串。
struct compare {
bool operator()(const std::string& first, const std::string& second) {
return first.size() < second.size();
}
};
std::vector<std::string> v;
compare c;
std::sort(v.begin(), v.end(), c);
如果它们的长度相同,您可能想要按字典顺序排序字符串。函数调用操作符应该是'const'。 –
你不需要做一个函数来做到这一点。一个简单的比较函数也可以做到这一点。 –
@DietmarKühl我认为你只是想稳定,如果他们是相同的长度。猜猜这取决于提问者。 – BoBTFish
应该能够使用普通std::sort(first, last, compare)
,和这样的比较功能:
bool compareLen(const std::string& a, const std::string& b)
{
return (a.size() < b.size());
}
std::sort
需要自定义比较
template< class RandomIt, class Compare >
void sort(RandomIt first, RandomIt last, Compare comp);
您只需定义将基于上长度的功能的可选参数。
- 1. 基于匹配字符串对字符串数组进行排序
- 2. 基于部分字符串(日期)在字符串中排序向量R
- 3. 对字符串数组进行排序并忽略大小写
- 4. 对字符串数组进行不区分大小写排序
- 5. AWK按字符串长度对字符串进行排序
- 6. C#字符串进行排序小和大写字母
- 7. 对字符串数组进行排序
- 8. 以mips对字符串进行排序
- 9. 对字符串数组进行排序
- 10. 对字符串中的字符进行排序的C程序
- 11. jquery resize li基于字符串大小
- 12. 基于字符串属性按字母顺序对数组进行排序
- 13. 基于字符串别名的排序
- 14. “[NSManagedObject]”基于匹配字符串排序
- 15. 如何对字符串中的字符进行排序?
- 16. 在Python中对字符串中的字符进行排序
- 17. Postgresql函数对字符串中的字符进行排序
- 18. 将字符串与其他字符串进行排序比较
- 19. 用字符串向量插入排序
- 20. 根据字符串中的数字对字符串进行排序Java
- 21. 按字符串长度对字符串排序后的字符串进行二进制搜索
- 22. 字符串矢量排序
- 23. 对部分字符串进行排版
- 24. 对基于字符串数组的对象集合进行排序
- 25. 排序字符串对象
- 26. Grails - sortableColumn - 强制对数字字符串进行数字排序
- 27. 如何对字母数字字符串值进行排序?
- 28. 用字符串进行泡泡排序
- 29. [Python]如何用两个变量对字符串进行排序?
- 30. 如何基于字符串字符子集向量?
不是'std :: sort_if()'。尽管如此,有一个重载'std :: sort()'的谓词。显然,谓词会比较参数的长度和它们是否相等比较字符串的字典顺序;否则如果第一个参数较短,它会返回'true'。 –
仅供参考 - 这些答案现在非常过时,现在不需要重载操作符,只需使用lambda! –