C++:C 字符串集

2024-03-03

我想创建一个,以便我可以使用 set::find 检查某个单词是否在集合中

然而,C 字符串是指针,因此默认情况下该集合将通过指针值来比较它们。为了正确运行,必须取消引用它们并比较字符串。

我可以只向构造函数传递一个指向 strcmp() 函数的指针作为比较器,但这并不完全是我希望它工作的方式。我可能想要检查的单词可能是较长字符串的一部分,并且由于性能问题我不想创建新字符串。如果没有该集合,我会使用 strncmp(a1, a2, 3) 来检查前 3 个字母。事实上,3 可能是最长的,所以我同意第三个参数为常量。

有没有办法构建一个集合,通过调用 strncmp() 来比较其元素?代码示例将不胜感激。

这是我想做的事情的伪代码:

bool WordInSet (string, set, length)
{
   for (each word in set)
    {
       if strncmp(string, word, length) == 0
            return true;
    }
    return false;
}

但我更喜欢使用标准库函数来实现它。


您可以创建一个比较器函数对象。

struct set_object {
    bool operator()(const char* first, const char* second) {
        return strncmp(first, second, 3);
    }
};

std::set<const char*, set_object> c_string_set;

然而,制作一套会更容易、更可靠。std::strings.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++:C 字符串集 的相关文章

随机推荐

  • 用于将结构类型映射到枚举的 C++ 模板?

    我有类似的东西 struct A struct B struct C class MyEnum public enum Value a b c template
  • 如何通过环境变量设置 Java 的最小和最大堆大小?

    如何通过环境变量设置 Java 的最小和最大堆大小 我知道可以在启动java时设置堆大小 但我想通过我的服务器上的环境变量来调整它 您不能直接使用环境变量来做到这一点 您需要使用传递给 java 命令的一组 非标准 选项 运行 java X
  • 如何在没有扩展程序的情况下在 Chrome 中测量像素?

    由于工作中的安全限制 我不被允许安装 Chrome 扩展程序 Chrome 在开发者工具中内置了一个标尺 但我不知道如何像标尺允许的那样定义起点和终点 是否有无需安装 Chrome 扩展程序即可测量像素的工具或技术 您可以创建自己的标尺功能
  • 如何设置仅显示月份和年份的日期选择器的日期

    我正在尝试显示一个仅显示月份 年份菜单的日期选择器 就像这个 Q 中那样jquery 日期选择器仅显示月份年份 https stackoverflow com questions 2208480 jquery date picker to
  • 来自多个数据库的 Hibernate 实体

    我们的数据模型分为两个数据库上的模式 除了一些在两者之间桥接的单键关系之外 这些模式是单独使用的 没有跨两个数据库的写入事务 类似这个问题使用 Hibernate 连接不同数据库中的 2 个表 https stackoverflow com
  • 为什么覆盖会改变列名

    我使用的是 rev 监听器的默认实现 正如预期的那样 我的 REVINFO 表中的列是 revtstmp 和 rev 然而 当我覆盖默认值时 我所做的只是 MyRevisionEntity extends DefaultRevisionEn
  • 是否有在多个事件侦听器上执行逻辑的设计模式

    我有在多个不同事件的步骤上执行的逻辑 例如 在 mousedown 上完成一些逻辑 这会更改 mousemove 使用的某些共享状态 这也会更改最终 mouseup 使用的某些共享状态 例如它可能看起来像这样 function handle
  • 检测用户何时将数据输入 edittext 立即显示答案[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何检测一个字符是否被输入到 Edi
  • 使用 array_diff 比较两个数组

    我有以下代码 并尝试将两个数组与 array diff 进行比较 但我一直没有得到任何结果 我不确定这是否重要 但数组中有很多字段 我真的只想比较 1 个字段 这可能吗 我缺少什么
  • 如何在点击后隐藏横幅并使用本地存储保存?

    我是 Java 脚本新手 在用户单击 Cookie 横幅上的 接受 后 我不知道如何保存信息 本地存储 一旦他单击 接受 Cookie 横幅就会消失 我想保存因此 当他进入下一页或重新加载页面时 他不会再次收到 Cookie Banner
  • Bash - HTML 内容的正则表达式

    我正在学习 Bash 脚本 并且需要一些帮助来理解正则表达式 我有一个基本上是网页 html 的变量 使用 wget 导出 currentURL https www example com currentPage wget q O curr
  • 嵌套 TextBlock 和超链接,如何在 C# 中复制此 XAML?

    我有这个 XAML
  • 创建自定义 Object3D 类

    我是来自 AS3 Away3D 背景的 THREE js 新手 我正在尝试创建一个扩展 THREE Object3D 的自定义对象类以添加到我的场景中 CustomObject会封装很多行为属性和方法 理想情况下 我想传递每个 Custom
  • Android 下载管理器所有下载完成后如何通知

    我正在使用 Android 下载管理器类 所有下载完成后我需要写 下载完成 我尝试过一些东西并且它有效 但在这里 它是在逐个文件完成后写入的 我只需要写一次 全部完成后 我也尝试过没有光标 但我没能实现 public class Downl
  • XCode 链接到 OpenSSL 库

    我有一个需要链接 openssl 库的项目 尽管在编译时遇到了一些问题 include
  • Netbeans 7.2.1 损坏的参考:dist.jar(在 JavaFX 文件上编码时)

    我试图通过阅读一些教程来学习 JavaFX 但是 我什至无法实现 helloworld 应用程序 NetBeans 说道 错误 无法找到或加载主类 helloworld NewFXMain Java 结果 1 然后当我检查 属性 gt 库
  • pdf.js 只适用于某些 pdf 文件吗?

    我正在尝试使用将 pdf 页面转换为画布pdf js 我使用了答案使用 pdf js 和 ImageData 将 pdf 渲染到单个 Canvas https stackoverflow com questions 15341010 ren
  • 在 pandas 数据框中添加缺失的时间

    我有一个pandas DataFrame在列中带有时间戳 这些值以纪元为单位 间隔 0 1 秒 价值观如1488771900 100000 1488771900 200000等等 但是 存在缺失值 所以我有1488794389 500000
  • 将文件编码为 Base64 时内存不足

    使用 Apache commons 中的 Base64 public byte encode File file throws FileNotFoundException IOException byte encoded try FileI
  • C++:C 字符串集

    我想创建一个 以便我可以使用 set find 检查某个单词是否在集合中 然而 C 字符串是指针 因此默认情况下该集合将通过指针值来比较它们 为了正确运行 必须取消引用它们并比较字符串 我可以只向构造函数传递一个指向 strcmp 函数的指