- // Questions and Answers:
- //
- // Q. Should I use std::list or base::LinkedList?
- //
- // A. The main reason to use base::LinkedList over std::list is
- // performance. If you don't care about the performance differences
- // then use an STL container, as it makes for better code readability.
- //
- // Comparing the performance of base::LinkedList<T> to std::list<T>:
- //
- // Erasing an element of type Tfrom base::LinkedList<T> is
- // an O(1) operation. Whereas for std::list<T> it is O(n).
- // That is because with std::list<T> you must obtain an
- // iterator to the T element before you can call erase(iterator).
- //
- // Insertion operations with base::LinkedList<T> never require
- // heap allocations.
- //
- // Q. How does base::LinkedList implementation differ from std::list?
- //
- // A. Doubly-linked lists are made up of nodes that contain "next" and
- // "previous" pointers that reference other nodes in the list.
- //
- // With base::LinkedList<T>, the type being inserted already reserves
- // space for the "next" and "previous" pointers (base::LinkNode<T>).
- // Whereas with std::list<T> the type can be anything, so the implementation
- // needs to glue on the "next" and "previous" pointers using
- // some internal node type.
来源: http://www.bubuko.com/infodetail-3384527.html