7
C# LinkedList
을 사용하여 다음 C++ 스 니펫과 동등한 작업을 수행하려면 어떻게해야합니까? 로C# LinkedList를 역순으로 트래버스하는 방법
std::list<MyClass*>::reverse_iterator itr(it);
for(; itr != MyList.rend(); ++itr)
C# LinkedList
을 사용하여 다음 C++ 스 니펫과 동등한 작업을 수행하려면 어떻게해야합니까? 로C# LinkedList를 역순으로 트래버스하는 방법
std::list<MyClass*>::reverse_iterator itr(it);
for(; itr != MyList.rend(); ++itr)
1 오프, 뭔가 같은 : 다음
public static IEnumerable<T> Reverse<T>(this LinkedList<T> list) {
var el = list.Last;
while (el != null) {
yield return el.Value;
el = el.Previous;
}
}
: 당신이 정기적으로 수행하는 경우
var el = list.Last;
while (el != null) {
// use el.Value
el = el.Previous;
}
, 어쩌면 비슷한 반복자 블록이 모든 값을 산출하는 방법 :
foreach(var val in list.Reverse()) {
// use val
}
나는 LinkedList'는'IEnumerable '이므로, Linq를 사용한다면'IEnumerable .Reverse()'를 선택합니다. 정말 짧은 목록만으로 충분할 수 있습니다. 긴 목록의 경우이 대답의 접근 방식이 더 효율적입니다. –
@MatthewStrawbridge 'using'을 통해 둘 다 사용할 수있는 경우 우선 순위는 어느 것입니까? 더 구체적인 것? –
@ EugenDück 예, 'LinkedList'에 대한 구체적인 설명이 우선합니다. 하지만 * 무료 * IEnumerable 버전의 성능이 충분하다면 다른 버전을 구현할 필요가 없습니다. –