0
RAIterator mid = beg + (end-beg)/2;
使中旬=乞討。我如何從隨機迭代器中獲取中間元素?
RAIterator mid = (beg+end)/2;
給出一個錯誤
我覺得我失去了一些東西明顯。
我的整個代碼段是從程序
template < class RAIterator , class Comparator >
void g_merge_sort (RAIterator beg, RAIterator end, Comparator& cmp)
{
if (beg == end)
return;
RAIterator mid = (beg+end)/2;
std::cout<<*mid<<std::endl;
g_merge_sort(beg, mid, cmp);
g_merge_sort(mid, end, cmp);
mergesort::Merge (beg, mid, end, cmp);
}
相關定義調用merge_sort遵循
typedef uint32_t ElementType;
ElementType * data = new ElementType [size];
g_merge_sort(data , data + dataStore.Size(), lts);
第一行代碼是正確的。在下面的聲明中的斷言不是,除了'(end-beg)<2'的情況。 – 2014-10-08 02:41:04
我當然同意,但我的系統不同意。這就是爲什麼我在它下面有cout,它打印第一個元素,然後遞歸調用打印相同的第一個元素,直到它最終出現段錯誤。 – 2014-10-08 02:46:09
這是問題的感謝。這是印刷的第一個因素,因爲它是如此之快以至於我看到的。這是因爲我沒有檢查最終的大小。 – 2014-10-08 02:51:05