如何创建自定义整理器?

维尼修斯·阿鲁达

我正在使用以下代码作为函数来对字符串列表进行排序:

bool stringLessThan(const string& str1, const string& str2) 
{
   const collate<char>& col = use_facet<collate<char> >(locale()); // Use the global locale

   string s1(str1);
   string s2(str2);

   transform(s1.begin(), s1.end(), s1.begin(), ::tolower);
   transform(s2.begin(), s2.end(), s2.begin(), ::tolower);
   const char* pb1 = s1.data();
   const char* pb2 = s2.data();
   return (col.compare(pb1, pb1 + s1.size(), pb2, pb2 + s2.size()) < 0);
}

我将全局语言环境设置为:

locale::global(locale("pt_BR.UTF-8")); 

如果使用en_EN.UTF-8语言环境,则使用我的语言(葡萄牙语-巴西)带有重音的单词的顺序将与我想要的顺序不同。所以我用pt_BR.UTF-8但是,字符串“ as”在“ a”之前,我要“ a”然后是“ as”。

原因是整理程序会忽略空格和字符串,例如:

a pencil
an apple

将被视为:

apencil
anapple

并且如果排序,将按以下顺序显示:

an apple
a pencil

但我想要:

a pencil
an apple

我使用Java做到了这一点,解决方案是创建一个自定义整理器。但是在c ++中我该如何处理呢?

脉冲

尝试创建自己的整理器类或比较函数。虽然在Java中,更惯用的方法可能是通过扩展来实现,但是在c ++中,对于您的情况,我建议您使用composition。

这只是意味着您的自定义整理器类将具有一个整理器成员,该成员将用于帮助其执行整理,而不是从collate该类派生

至于比较规则,您似乎需要显式实现自己的逻辑。如果您不希望空格被忽略,也许您应该对字符串进行标记化。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何创建自己的自定义地图

来自分类Dev

如何创建自定义SKAction?

来自分类Dev

如何创建引用的自定义容器?

来自分类Dev

如何创建自定义非线性滤波器?

来自分类Dev

Jetty如何创建自定义WebSocket

来自分类Dev

创建自定义微调器模型

来自分类Dev

如何创建自定义形状-CSS

来自分类Dev

如何创建自定义订阅服务器?

来自分类Dev

如何从UDF创建自定义变压器?

来自分类Dev

如何创建自定义的fabricjs对象?

来自分类Dev

Jeta:如何创建自定义注释处理器

来自分类Dev

如何创建自定义进度

来自分类Dev

SwiftUI:如何创建自定义UIDatePicker

来自分类Dev

如何创建自定义单选按钮?

来自分类Dev

如何使用自定义的Equal比较器创建字典?

来自分类Dev

如何创建自定义后退按钮?

来自分类Dev

如何创建自定义虚线

来自分类Dev

如何创建自定义SELinux标签

来自分类Dev

如何创建自定义模式叠加

来自分类Dev

如何创建自定义的“文档属性”?

来自分类Dev

如何在Ember中创建自定义枚举器?

来自分类Dev

如何创建自定义JTable?

来自分类Dev

如何创建Django自定义查询?

来自分类Dev

如何创建自定义属性类型

来自分类Dev

如何创建自定义吐司

来自分类Dev

创建自定义分页器指标

来自分类Dev

如何创建自定义[QUOTE]标签?

来自分类Dev

如何创建自定义字体图标?

来自分类Dev

如何创建自定义UIDatePicker?