地图的自定义比较器
在 C 中,地图使用比较函数来组织其键值对。默认情况下,映射的内置字符串比较器按字母顺序比较字符串。但是,您可以重写此比较器来定义您自己的比较条件。
使用自定义比较器
要定义您自己的字符串比较器,请创建一个实现该运算符的结构体() 方法。该方法应采用两个字符串作为参数并返回一个布尔值,指示它们的顺序:
<code class="cpp">struct cmpByStringLength { bool operator()(const std::string& a, const std::string& b) const { return a.length() < b.length(); } };
此比较器按字符串的长度升序比较字符串。
使用自定义比较器
要使用自定义比较器创建地图,请将其作为第三个模板参数提供:
<code class="cpp">std::map<std::string, std::string, cmpByStringLength> myMap;</code>
或者,您可以将比较器传递给地图的构造函数:
<code class="cpp">std::map<std::string, std::string> myMap(cmpByStringLength());</code>
其他排序选项
覆盖比较器允许您根据任何自定义条件对地图进行排序。请注意,按长度比较时,每个长度只能有一个字符串作为映射中的唯一键。
对于更复杂的排序需求,您还可以探索使用第三方库,例如 Boost 的 multi_index 容器。
以上是如何自定义 C 映射中键的排序?的详细内容。更多信息请关注PHP中文网其他相关文章!