ontainer. In particular, an iterator abstracts away differences in specific container types, allowing you to view the collection simply as a sequence of items. A generic algorithm (for sorting, say) can be written in terms of an iterator, so that you can use the algorithm over any data structure having an iterator with the requisite operations. Data structures are categorized by their time and space semantics. A list has constant time insertion and removal of items, but searching for an item requires linear time. An array (”vector”) has constant time searching (”random access”), but insertions and removal require time proportional the length of the array. (A ”deque” is another STL data structure that supports constant time insertion of items at the either end of the sequence, and allows random access of elements. This data structure is planned for a future version of Charles.) In addition to lists and vectors, the Charles library has set, multi-set, map, and multi-map dat...