有谁知道 memcspn 函数的有效实现?它应该表现得像 strcspn,但在内存缓冲区中查找跨度,而不是在空终止字符串中查找。目标编译器是 visualC++。
谢谢, 卢卡
最佳答案
一个接近最优的实现:
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
使用位数组而不是字节数组可能更好,这取决于算术或更多缓存抖动在您的机器上是否更昂贵。
关于c - 高效内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3602534/