0

我已经四处寻找,但对我没有任何用处。

编写交换方法以交换两个原始值的最佳方法是ObjectiveC什么?

你知道原始类型有不同的大小,所以如果我们通过类似的东西传递它们void *,那么我们怎么知道它们的大小?(也许是它们大小的一个额外参数?)

C#,它可能是这样的:

void Swap<T>(ref T a, ref T b)
{
    T tmp = a;
    a = b;
    b = tmp;
}

一个想法可能是创建一个具有相同输入类型大小的临时内存块,然后使用类似方法memcpy或其他方法将它们复制为内存块。

ObjectiveC但如果有更好的,我更喜欢更自然的东西。

4

1 回答 1

0

如果类型确实是原始类型,则可以使用 XOR 交换算法。

x = x ^ y;
y = x ^ y;
x = x ^ y;

在宏中,这可能如下所示:

#define SWAP(a, b) (a^=b;b^=a;a^=b;)

但应始终注意宏。

否则,你可以试试这个:https ://stackoverflow.com/a/3982430/2471910

于 2013-06-10T17:52:34.280 回答