c++ - Swap() 函数的哪种实现更好,在什么情况下更好?

标签 c++ templates stl std swap

<分区>

我定义了两个函数:

1).

template<class T> inline
void swap(T &first, T &second)
{   
    if (&first != &second)
    {
        T tmp = first;
        first = second;
        second = tmp;
    }
}

2).

template<typename T>
inline void SwapMe(T *first, T *second)
{
    if(*first != *second)
    {
        T tmp = *first;
        *first = *second;
        *second = tmp;
    }
}

哪个实现更好(第一个等于 std::swap() )?

最佳答案

第一个版本对于按引用传递或按值传递的变量更好。

第二种更适合指向值的指针。

它们是不同的,因为引用与指针是不同的动物。

关于c++ - Swap() 函数的哪种实现更好,在什么情况下更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14472510/

相关文章:

c++ - GLSL - 给定顶点法线计算表面法线

C++ 相当于.net Stream?

c++ - 继承函数的重载解决方案

c++ - 希望在 STL vector 中找到 C++ STL vector

C++ 定义两个 multimaps 导致程序崩溃

c++ - 迭代 std::vector 的最有效方法是什么,为什么?

c++ - vector 比较

c++ - SHGetSpecialFolderPath() 未在此范围内声明

c++ - 尽管存在专用函数,但是否可以调用非专用模板函数?

C++ 访问继承类的成员,其中继承类是模板参数