-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