0
在大學的CS類中,我們已經分配了幾個功能模板來模擬標準庫中的功能。我已經測試了所有這些工具,除了最後一個「刪除」功能外,它們都可以工作。模仿從標準模板庫中刪除的功能無法正常工作
template <typename T>
T* remove(T *left, T *right, T &item)
{
T *element = left; // Need a pointer to the element we are manipulating
int GoAhead; // How much in advance is the next element to check
T *finalElement = right; // The new final pointer of the array.
while(element < right)
{
if(*element == item)
{
GoAhead = 0;
while(element + GoAhead < finalElement)
{
T *tempElement = element + GoAhead;
*tempElement = *(tempElement + 1);
++GoAhead;
}
--finalElement;
}
++element;
}
return finalElement;
}
它運作良好,當陣列雖小,但是當數組有很多元素(在測試中,我們給出了10萬個的元素數組)由於某種原因,它忽略了一些應該刪除的元素。我不明白爲什麼會發生這種情況。 有人可以指出我做錯了嗎?
應該將'while(element
我嘗試了兩種方法,他們給出了相同的結果。我認爲(元素
blastxu
另一個問題是您應該測試新的當前項目是否相等,而不是遞增到下一個,以防您有兩個或更多個匹配項目。 –