… | |
… | |
405 | return !strcmp (a, b); |
405 | return !strcmp (a, b); |
406 | } |
406 | } |
407 | }; |
407 | }; |
408 | |
408 | |
409 | // Mostly the same as std::vector, but insert/erase can reorder |
409 | // Mostly the same as std::vector, but insert/erase can reorder |
410 | // the elements, making insret/remove O(1) instead of O(n). |
410 | // the elements, making append(=insert)/remove O(1) instead of O(n). |
411 | // |
411 | // |
412 | // NOTE: only some forms of erase/insert are available |
412 | // NOTE: only some forms of erase are available |
413 | template<class T> |
413 | template<class T> |
414 | struct unordered_vector : std::vector<T, slice_allocator<T> > |
414 | struct unordered_vector : std::vector<T, slice_allocator<T> > |
415 | { |
415 | { |
416 | typedef typename unordered_vector::iterator iterator; |
416 | typedef typename unordered_vector::iterator iterator; |
417 | |
417 | |