digitalmars.D.learn - So how do I find and remove an element from DList?
- Ogi (4/7) Jul 10 2020 It works if I replace `remove` with `linearRemove`, but that
- Steven Schveighoffer (5/13) Jul 10 2020 It's not linear over the size of the list, it's linear over the size of
- Ogi (3/7) Jul 10 2020 I see. Thanks!
auto list = DList!int([1, 2, 3, 4]); list.remove(list[].find(2).take(1));Error: function std.container.dlist.DList!int.DList.remove(Range r) is not callable using argument types (Take!(Range))It works if I replace `remove` with `linearRemove`, but that defeats the whole purpose of using a doubly linked list.
Jul 10 2020
On 7/10/20 3:08 PM, Ogi wrote:auto list = DList!int([1, 2, 3, 4]); list.remove(list[].find(2).take(1));It's not linear over the size of the list, it's linear over the size of the range. If you are always removing 1 element, it's effectively O(1). -SteveError: function std.container.dlist.DList!int.DList.remove(Range r) is not callable using argument types (Take!(Range))It works if I replace `remove` with `linearRemove`, but that defeats the whole purpose of using a doubly linked list.
Jul 10 2020
On Friday, 10 July 2020 at 19:23:57 UTC, Steven Schveighoffer wrote:It's not linear over the size of the list, it's linear over the size of the range. If you are always removing 1 element, it's effectively O(1). -SteveI see. Thanks!
Jul 10 2020