-2
我有一个C函数转换字节任意数量:适应的std ::交换接口交换n个字节
void my_swap(void* a, void* b, long n);
我已经做了一些benckmark几种类型,我已经看到了std::swap
跑赢my_swap
。
所以,我想换std::swap
与my_swap
接口,但我无法弄清楚如何告诉std::swap
表现得好像它是将一种类型T
的两个变量,为此sizeof(T)==n
。
任何人都可以将std::swap
包装在一个具有相同签名(当然与语义相同)的函数中,如my_swap
?
当你有'std :: swap'这是类型安全的,为什么使用'my_swap'丢掉类型信息? – 2015-02-10 09:32:40
@NickyC因为我有很多旧代码,我无法打破。 – 2015-02-10 09:36:33
如果你在编译时不知道'n'的值,那么你不能这样做。但是,如果您重新解释将'a'和'b'强制转换为'char *',则可以使用'std :: swap_ranges'。 – 2015-02-10 09:43:52