Stumped en gran medidaC# punteros, iteradores y genéricos
¿Cómo puedo utilizar un iterador en C# como un iterador C++? No puedo encontrar un acceso Begin() o End(), ni siquiera puedo averiguar cómo declarar un iterador. He leído sobre el Ienumerator. Mi objetivo es implementar la función de fusión. Aquí hay una parte de mi función Merge escrita en C++. Sobre todo, estoy buscando el equivalente de C# de lo que se muestra, excepto que usaré un tipo de referencia en lugar de números enteros.
void merge(vector<int>::iterator left, vector<int>::iterator right, vector<int>::iterator leftEnd, vector<int>::iterator rightEnd, vector<int>::iterator full)
{
while(left != leftEnd && right!= rightEnd) //compare left and right until the end of the vector is reached
{
if(*right < *left) //right < left so insert right to the output vector and advance the iterators
{
*full++ = *right++;
}
else //left < right so insert left to the output vector and advance the iterators
{
*full++ = *left++;
}
}
while(left != leftEnd) //copy any remaining elements into the output from left
{
*full++ = *left++;
}
}
Además, ¿qué colección (es) debo usar? (Actualmente he estado intentando List<T>
y LinkedList<T>
).
¿No está implementando nuevamente el método [Enumerable.Concat (Of TSource)] (http://msdn.microsoft.com/en-us/library/bb302894.aspx)? –
@Serge no, esta es la parte de combinación del tipo de fusión. Tenga en cuenta 'if (* right <* left)' – CodesInChaos