std :: sort如何仅使用迭代器实现交换操作?

Mic*_*ael 3 c++ algorithm stl

我该如何实现以下内容

template <typename ITERATOR> void Swap (ITERATOR a, ITERATOR b) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

因此Swap(a,b)交换a和b指向的值.换句话说:如何在不知道数据类型的情况下创建第三个变量?

Dan*_*ani 7

iter_swap只为那份工作:

std::iter_swap(a, b);
Run Code Online (Sandbox Code Playgroud)

此外,如果您可以使用c ++ 11,您可以使用decltype:

std::remove_reference<decltype(*a)>::type c = *a;
*a = *b;
*b = c;
Run Code Online (Sandbox Code Playgroud)


NPE*_*NPE 6

如何在不知道数据类型的情况下创建第三个变量?

使用 std::iterator_traits<ITERATOR>::value_type