小编bra*_*ire的帖子

为什么std ::旋转这么快?

为什么std::rotate比cplusplus.com描述的等效功能快得多?

cplusplus.com的实施:

template <class ForwardIterator>
  void rotate (ForwardIterator first, ForwardIterator middle, ForwardIterator last)
{
  ForwardIterator next= middle;

  while (first != next)
  {
    swap (*first++, *next++);

    if(next == last)
        next= middle;
    else if (first==middle)
        middle= next;
  }
}
Run Code Online (Sandbox Code Playgroud)

我有两个完全相同的插入排序算法,除了一个使用std::rotate,一个使用cplusplus.com的等效函数.我正在设置它们用1000个int元素排序1000个向量.使用的排序std::rotate需要0.376秒,而另一个需要8.181秒.

为什么是这样?我不打算尝试做出比STL功能更好的东西,但我仍然很好奇.

c++ sorting algorithm stl c++11

26
推荐指数
2
解决办法
1万
查看次数

标签 统计

algorithm ×1

c++ ×1

c++11 ×1

sorting ×1

stl ×1