在C#中编写C ++ std :: reverse等价物的最接近的方法是什么?

时间:2016-03-16 05:32:26

标签: c# c++ .net algorithm

C ++标准库中的reverse算法等同于

template <class BidirectionalIterator>
  void reverse (BidirectionalIterator first, BidirectionalIterator last)
{
  while ((first!=last)&&(first!=--last)) {
    std::iter_swap (first,last);
    ++first;
  }
}

根据http://www.cplusplus.com/reference/algorithm/reverse/。我想在C#中写出等价物:

public void Reverse<T> ( T first, T last ) 
{
    // ... 
}

首先,你如何传递两个对IEnumerator s的引用,第二个是可以向后传播的引用?有没有一种自然的方法可以做到这一点,还是需要先扩展IEnumerable<T>

其次,如果上一个问题的答案是否定的,那么是否有一个Skeet认证的C#编写方式reverse在通用性和效率方面等于C ++?如果是这样,它是什么?

1 个答案:

答案 0 :(得分:0)

List<T>接口提供Reverse()方法,该方法与C ++ equivapent相同。

看看https://msdn.microsoft.com/en-us/library/b0axc2h2(v=vs.110).aspx