strcmp,至少使用 g++,对许多架构有很多优化。在我的 Core2Duo E8400 电脑中,strcmp 比使用直接实现快两倍。
我的问题是是否存在某个库提供了比较两个“反向字符串”的函数。反向字符串 char *s1
开始于 s1
并以一些 s1-n
结束这样 s1-n == '\0'
(其中 n >= 0
和所有 0 <= n' < n, s1-n' != '\0'
)。
当然,要求是这个函数必须像strcmp那样高效、可移植。
编辑:我只需要知道两个字符串是否相等(所以我不需要知道哪个更大。那么 strcmp 的相同优化原则上对反向字符串也适用)。
最佳答案
据我所知,大多数针对特定架构的 strcmp 优化都使用将多个字节比较在一起的技巧,例如转换为具有对齐指针的 long 等。这些优化不太可能用于比较字符串的反向,即反向不会形成相同的例如长并再次反转它以生成相同的数字将导致效率损失。所以我认为答案是否定的。
关于c - 用于反向字符串的高效且便携的 strcmp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12563807/