Tôi rất bối rốiC# con trỏ, vòng lặp và generics
Làm cách nào để sử dụng trình lặp trong C# như trình lặp C++? Tôi không thể tìm thấy một accessor Begin() hoặc End(), thậm chí tôi không thể tìm ra cách khai báo một iterator. Tôi đã đọc về Ienumerator. Mục tiêu của tôi là triển khai hàm Merge. Đây là một phần của hàm Merge được viết bằng C++. Chủ yếu, tôi đang tìm kiếm C# tương đương với những gì được hiển thị, ngoại trừ tôi sẽ sử dụng một loại tham chiếu chứ không phải là số nguyên.
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++;
}
}
Ngoài ra, tôi nên sử dụng bộ sưu tập nào? (hiện tại tôi đang thử List<T>
và LinkedList<T>
).
Không phải bạn đang triển khai lại phương pháp [Enumerable.Concat (Of TSource)] (http://msdn.microsoft.com/en-us/library/bb302894.aspx)? –
@Serge no, đây là phần hợp nhất của sắp xếp hợp nhất. Chú ý 'if (* right <* left)' – CodesInChaos