From 34068836d3171389c5e2e5c9fb12d01c62386052 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Mon, 8 Jun 2009 07:01:58 +0000 Subject: [PATCH] Fixed Remove() operations to be O(1) again, I just didn't get it. The item sorting does not need to be preserved. Thanks Marcus! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30995 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/media/TList.h | 5 +++-- headers/private/media/TMap.h | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/headers/private/media/TList.h b/headers/private/media/TList.h index d89e3327ba..e769fdd7be 100644 --- a/headers/private/media/TList.h +++ b/headers/private/media/TList.h @@ -68,8 +68,9 @@ public: return false; delete items[index]; item_count--; - for (int i = index; i < item_count; i++) - items[i] = items[i + 1]; + items[index] = items[item_count]; + if (index == item_iter) + item_iter--; return true; } diff --git a/headers/private/media/TMap.h b/headers/private/media/TMap.h index dfabce7e06..3a6f2c9f09 100644 --- a/headers/private/media/TMap.h +++ b/headers/private/media/TMap.h @@ -150,8 +150,9 @@ private: return false; delete items[index]; item_count--; - for (int i = index; i < item_count; i++) - items[i] = items[i + 1]; + items[index] = items[item_count]; + if (index == item_iter) + item_iter--; return true; }