ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/dclient/include/adt/unordered_vector.h
Revision: 1.2
Committed: Mon Oct 18 14:11:43 2010 UTC (13 years, 9 months ago) by sf-pippijn
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +0 -0 lines
State: FILE REMOVED
Log Message:
check and log but do not die when ncurses stuff fails

File Contents

# Content
1 #pragma once
2
3 template<typename T>
4 void
5 unordered_erase (std::vector<T> &vec, typename std::vector<T>::iterator pos)
6 {
7 vec.at (vec.end () - pos) = vec.back ();
8 vec.pop_back ();
9 }
10
11 template<typename T>
12 void
13 unordered_erase (std::vector<T> &vec, typename std::vector<T>::size_type pos)
14 {
15 unordered_erase (vec, vec.begin () + pos);
16 }
17
18 template<typename T>
19 void
20 unordered_erase (std::vector<T> &vec, typename std::vector<T>::const_reference element)
21 {
22 unordered_erase (vec, &element - &vec.front ());
23 }
24
25 template<typename T>
26 struct unordered_vector
27 {
28 typedef std::vector<T> vector_type;
29
30 typedef typename vector_type::value_type value_type;
31 typedef typename vector_type::pointer pointer;
32 typedef typename vector_type::const_pointer const_pointer;
33 typedef typename vector_type::reference reference;
34 typedef typename vector_type::const_reference const_reference;
35 typedef typename vector_type::iterator iterator;
36 typedef typename vector_type::const_iterator const_iterator;
37 typedef typename vector_type::reverse_iterator reverse_iterator;
38 typedef typename vector_type::const_reverse_iterator const_reverse_iterator;
39 typedef typename vector_type::size_type size_type;
40 typedef typename vector_type::difference_type difference_type;
41
42 iterator begin () { return items.begin (); }
43 iterator end () { return items.end (); }
44 const_iterator begin () const { return items.begin (); }
45 const_iterator end () const { return items.end (); }
46
47 void push_back (value_type const &x) { return items.push_back (x); }
48
49 reference front () { return items.front (); }
50 const_reference front () const { return items.front (); }
51 reference back () { return items.back (); }
52 const_reference back () const { return items.back (); }
53
54 reference at (size_type n) { return items.at (n); }
55 const_reference at (size_type n) const { return items.at (n); }
56
57 void pop_back () { return items.pop_back (); }
58
59 size_type size () const { return items.size (); }
60 bool empty () const { return items.empty (); }
61
62 void erase (iterator pos) { return unordered_erase (items, pos); }
63 void erase (size_type pos) { return unordered_erase (items, pos); }
64 void erase (const_reference elt) { return unordered_erase (items, elt); }
65
66 vector_type items;
67 };