首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高效内存

高效内存
EN

Stack Overflow用户
提问于 2010-08-31 01:00:26
回答 2查看 473关注 0票数 2

有人知道memcspn函数的有效实现吗?它的行为应该类似于strcspn,但在内存缓冲区中查找跨度,而不是在以null结尾的字符串中查找。目标编译器是visualC++。

谢谢,卢卡

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-31 01:44:34

一个近乎最优的实现:

代码语言:javascript
复制
size_t memcspan(const unsigned char *buf, size_t len, const unsigned char *set, size_t n)
{
    size_t i;
    char set2[1<<CHAR_BIT] = {0};
    while (n--) set2[set[n]] = 1;
    for (i=0; i<len && !set2[buf[i]]; i++);
    return i;
}

对于set2,使用位数组而不是字节数组可能更好,这取决于在您的机器上是算术运算还是稍微多一点的缓存抖动更昂贵。

票数 2
EN

Stack Overflow用户

发布于 2010-08-31 01:06:51

这个函数的低效实现似乎相当困难,TBH --实现看起来非常简单,所以如果你不能在合理的时间范围内找到一个实现,我建议你自己写。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3602534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档