gpt4 book ai didi

C++ 在固定大小为 9 的右填充空终止字符数组中查找第一个空格的最快方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:11:39 25 4
gpt4 key购买 nike

字符串的平均长度为 4 个字符。我在想从位置 4 开始的二进制搜索可能是最快的。我还认为内联模板化函数可能表现良好。这是在一个非常紧密的循环中完成的,因此性能至关重要。

数据如下:

"1234    "
"ABC "
"A1235 "
"A1235kgo"

最佳答案

char* found = std::find(arr, arr+9, ' ');

请注意,结束迭代器会发出“不匹配”信号:

bool match = (arr+9) != found;

请注意,

  • 二分查找不适用,除非你的字符在一些已知的顺序中
  • std::find 是内联的、模板化的,如果您打开优化(例如,-O3 -march=native for g++),它将发挥最大作用

编辑 由于您展示了更多代码,我现在意识到您实际上想要检测(子)字符串长度。你可以使用

当然,这假设您想要将 char[] 转换为 std::string 。实际上,这可能是一个完全有效的想法,因为在几乎所有 C++ 标准库的实现中都可以找到 SSO(小字符串优化)。(请参阅 Herb Sutter 的 More Exceptional C++ 中的第 13-16 项,或 Scott Meyers 在 Effective STL 中对商业 std::string 实现的讨论)。

关于C++ 在固定大小为 9 的右填充空终止字符数组中查找第一个空格的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8043390/

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