stlab.adobe.com Adobe Systems Incorporated

table_index Class Template Reference
[Other containers: circular_queue, table_index, static_table, etc.]

#include <table_index.hpp>

List of all members.


Detailed Description

template<typename Key, typename T, typename Transform = mem_data_t<T, const Key>, typename Compare = std::less<Key>>
class adobe::table_index< Key, T, Transform, Compare >

Terminology:
  • Row : any class or struct type; an element
  • Column : a data or logical member of an element
  • Table : any random access container of elements
  • Transformation Function : given an element returns 1 or more columns. The result is by const reference so columns must be adjacent
  • Key : a value which can be compared against a single member of an element
The table_index does not own the elements it indexes. Therefore the client is required to maintain the elements in the table_index as long as the table_index refers to them.

If the index is not sorted then the result of a lookup by key is undefined.

Todo:
(sparent) note here on why not auto sort.

Definition at line 671 of file table_index.hpp.


Public Types

typedef
boost::indirect_iterator
< typename
index_type::const_iterator > 
const_iterator
typedef const T * const_pointer
typedef const T & const_reference
typedef std::reverse_iterator
< const_iterator
const_reverse_iterator
typedef index_type::difference_type difference_type
typedef std::vector< T * > index_type
typedef
boost::indirect_iterator
< typename
index_type::iterator > 
iterator
typedef Compare key_compare
typedef Key key_type
typedef T * pointer
typedef T & reference
typedef std::reverse_iterator
< iterator
reverse_iterator
typedef index_type::size_type size_type
typedef Transform transform_type
typedef T value_type

Public Member Functions

reference at (size_type n)
const_reference at (size_type n) const
const_reference back () const
reference back ()
const_iterator begin () const
iterator begin ()
void clear ()
size_type count (const key_type &x) const
bool empty () const
const_iterator end () const
iterator end ()
std::pair< const_iterator,
const_iterator
equal_range (const key_type &x) const
std::pair< iterator, iteratorequal_range (const key_type &x)
iterator erase (iterator first, iterator last)
iterator erase (iterator location)
const_iterator find (const key_type &x) const
iterator find (const key_type &x)
const_reference front () const
reference front ()
const index_typeindex () const
index_typeindex ()
template<class InputIterator>
void insert (iterator position, InputIterator first, InputIterator last)
iterator insert (iterator, value_type &)
const_iterator lower_bound (const key_type &x) const
iterator lower_bound (const key_type &x)
size_type max_size () const
const_reference operator[] (const key_type &) const
reference operator[] (const key_type &)
void pop_back ()
void push_back (value_type &)
const_reverse_iterator rbegin () const
reverse_iterator rbegin ()
const_reverse_iterator rend () const
reverse_iterator rend ()
size_type size () const
void sort ()
template<typename InputIterator, typename TransformPrimitive>
 table_index (InputIterator first, InputIterator last, TransformPrimitive transform, const key_compare &compare=key_compare())
 table_index (const transform_type &, const key_compare &=key_compare())
template<class TransformPrimitive>
 table_index (TransformPrimitive transform, const key_compare &compare=key_compare())
transform_type transform () const
void unique ()
const_iterator upper_bound (const key_type &x) const
iterator upper_bound (const key_type &x)

Friends

void swap (table_index &x, table_index &y)

Member Typedef Documentation

Const iterator used to iterate through a table_index.

Definition at line 690 of file table_index.hpp.

Const pointer to T.

Definition at line 687 of file table_index.hpp.

Const reference to T.

Definition at line 683 of file table_index.hpp.

Const iterator used to iterate backwards through a table_index.

Definition at line 692 of file table_index.hpp.

A signed integral type.

Definition at line 685 of file table_index.hpp.

Container to store the elements of the table.

Definition at line 675 of file table_index.hpp.

Iterator used to iterate through a table_index.

Definition at line 689 of file table_index.hpp.

Functor that compares two keys for ordering.

Definition at line 680 of file table_index.hpp.

The table_index's key type, Key.

Definition at line 678 of file table_index.hpp.

Pointer to T.

Definition at line 686 of file table_index.hpp.

Reference to T.

Definition at line 682 of file table_index.hpp.

Iterator used to iterate backwards through a table_index.

Definition at line 691 of file table_index.hpp.

An unsigned integral type.

Definition at line 684 of file table_index.hpp.

ConvertibleToFunction used to transform an element into a specific key.

Definition at line 676 of file table_index.hpp.

The type of object referenced by the table_index.

Definition at line 679 of file table_index.hpp.


Constructor & Destructor Documentation

table_index ( TransformPrimitive  transform,
const key_compare compare = key_compare() 
) [explicit]

Parameters:
transform ConvertibleToFunction to be converted to the transformation function for this index
compare key comparison function for this index

Definition at line 695 of file table_index.hpp.

table_index ( const transform_type transform,
const key_compare compare = key_compare() 
) [explicit]

Parameters:
transform transformation function for this index
compare key comparison function for this index

Definition at line 817 of file table_index.hpp.

table_index ( InputIterator  first,
InputIterator  last,
TransformPrimitive  transform,
const key_compare compare = key_compare() 
)

Definition at line 702 of file table_index.hpp.


Member Function Documentation

table_index< Key, T, Compare, Transform >::reference at ( size_type  n  ) 

Parameters:
n index into the table.
Returns:
Element n in the table.

Definition at line 1013 of file table_index.hpp.

table_index< Key, T, Compare, Transform >::const_reference at ( size_type  n  )  const

Parameters:
n index into the table.
Returns:
Element n in the table.

Definition at line 1022 of file table_index.hpp.

Returns:
The last element in the table.

Returns:
The last element in the table.

table_index< Key, T, Compare, Transform >::const_iterator begin (  )  const

Returns:
A const_iterator pointing to the beginning of the table_index.

Definition at line 836 of file table_index.hpp.

table_index< Key, T, Compare, Transform >::iterator begin (  ) 

Returns:
An iterator pointing to the beginning of the table_index.

Definition at line 827 of file table_index.hpp.

void clear (  ) 

Erases the entire table_index.

Definition at line 987 of file table_index.hpp.

table_index< Key, T, Compare, Transform >::size_type count ( const key_type x  )  const

Precondition:
table must be sorted.
Parameters:
x key value to count within the index
Returns:
Count of the elements with key value x.

Definition at line 1087 of file table_index.hpp.

bool empty (  )  const

Returns:
true if the table_index's size is 0.

Definition at line 916 of file table_index.hpp.

table_index< Key, T, Compare, Transform >::const_iterator end (  )  const

Returns:
A const_iterator pointing to the end of the table_index.

Definition at line 854 of file table_index.hpp.

table_index< Key, T, Compare, Transform >::iterator end (  ) 

Returns:
An iterator pointing to the end of the table_index.

Definition at line 845 of file table_index.hpp.

std::pair< typename table_index< Key, T, Compare, Transform >::const_iterator, typename table_index< Key, T, Compare, Transform >::const_iterator > equal_range ( const key_type x  )  const

Precondition:
table must be sorted.
Parameters:
x key value to find within the index
Returns:
Essentially a combination of the values returned by lower_bound and upper_bound

Definition at line 1148 of file table_index.hpp.

std::pair< typename table_index< Key, T, Compare, Transform >::iterator, typename table_index< Key, T, Compare, Transform >::iterator > equal_range ( const key_type x  ) 

Precondition:
table must be sorted.
Parameters:
x key value to find within the index
Returns:
Essentially a combination of the values returned by lower_bound and upper_bound

Definition at line 1137 of file table_index.hpp.

table_index< Key, T, Compare, Transform >::iterator erase ( iterator  first,
iterator  last 
)

Parameters:
first Iterator to the first element to be erased from the index
last Iterator to one past the last element to be erased from the index
Returns:
An iterator pointing to to the next element after the ones removed from the index

Definition at line 979 of file table_index.hpp.

table_index< Key, T, Compare, Transform >::iterator erase ( iterator  location  ) 

Parameters:
position iterator to the element to be removed from the index
Returns:
An iterator pointing to the next element after the one removed from the index

Definition at line 970 of file table_index.hpp.

table_index< Key, T, Compare, Transform >::const_iterator find ( const key_type x  )  const

Precondition:
table must be sorted.
Parameters:
x key value to find within the index
Returns:
Iterator to the element with key value x, or end() if there is none.

Definition at line 1073 of file table_index.hpp.

table_index< Key, T, Compare, Transform >::iterator find ( const key_type x  ) 

Precondition:
table must be sorted.
Parameters:
x key value to find within the index
Returns:
Iterator to the element with key value x, or end() if there is none.

Definition at line 1059 of file table_index.hpp.

Returns:
The first element in the table.

Returns:
The first element in the table.

const table_index< Key, T, Compare, Transform >::index_type & index (  )  const

Returns:
All the elements in the index in a std::vector

Definition at line 1167 of file table_index.hpp.

table_index< Key, T, Compare, Transform >::index_type & index (  ) 

Returns:
All the elements in the index in a std::vector

Definition at line 1158 of file table_index.hpp.

void insert ( iterator  position,
InputIterator  first,
InputIterator  last 
)

Parameters:
position position at which the new elements are to be inserted
first Iterator to the first new element to be inserted
last Iterator to one past the last new element to be inserted
Postcondition:
The elements found in (first, last] must exist as long as this table's references to them exist.

Definition at line 955 of file table_index.hpp.

table_index< Key, T, Compare, Transform >::iterator insert ( iterator  position,
value_type x 
)

Parameters:
position position at which the new element is to be inserted
x The element to insert as the position specified
Returns:
An iterator pointing to the new element.
Postcondition:
x must exist as long as this table's reference to it exists.

Definition at line 941 of file table_index.hpp.

table_index< Key, T, Compare, Transform >::const_iterator lower_bound ( const key_type x  )  const

Precondition:
table must be sorted.
Parameters:
x key value to find within the index
Returns:
The first position where the element transformed to x could be inserted without violating the ordering of the table.

Definition at line 1106 of file table_index.hpp.

table_index< Key, T, Compare, Transform >::iterator lower_bound ( const key_type x  ) 

Precondition:
table must be sorted.
Parameters:
x key value to find within the index
Returns:
The first position where the element transformed to x could be inserted without violating the ordering of the table.

Definition at line 1096 of file table_index.hpp.

table_index< Key, T, Compare, Transform >::size_type max_size (  )  const

Returns:
The largest possible size of the table_index.

Definition at line 899 of file table_index.hpp.

table_index< Key, T, Compare, Transform >::const_reference operator[] ( const key_type key  )  const

Precondition:
table must be sorted.
Parameters:
key key value to find in the table index.
Returns:
One or more adjacent values whose keys match key.

Definition at line 1045 of file table_index.hpp.

table_index< Key, T, Compare, Transform >::reference operator[] ( const key_type key  ) 

Precondition:
table must be sorted.
Parameters:
key key value to find in the table index.
Returns:
One or more adjacent values whose keys match key.

Definition at line 1031 of file table_index.hpp.

void pop_back (  ) 

Eliminates the last element from the table.

Definition at line 932 of file table_index.hpp.

void push_back ( value_type x  ) 

Parameters:
x The element to insert at the end of the table
Postcondition:
x must exist as long as this table's reference to it exists.

Definition at line 924 of file table_index.hpp.

table_index< Key, T, Compare, Transform >::const_reverse_iterator rbegin (  )  const

Returns:
A const_reverse_iterator pointing to the beginning of the reversed table_index.

Definition at line 872 of file table_index.hpp.

table_index< Key, T, Compare, Transform >::reverse_iterator rbegin (  ) 

Returns:
A reverse_iterator pointing to the beginning of the reversed table_index.

Definition at line 863 of file table_index.hpp.

table_index< Key, T, Compare, Transform >::const_reverse_iterator rend (  )  const

Returns:
A const_reverse_iterator pointing to the end of the reversed table_index.

Definition at line 890 of file table_index.hpp.

table_index< Key, T, Compare, Transform >::reverse_iterator rend (  ) 

Returns:
A reverse_iterator pointing to the end of the reversed table_index.

Definition at line 881 of file table_index.hpp.

table_index< Key, T, Compare, Transform >::size_type size (  )  const

Returns:
Returns the size of the table_index.

Definition at line 908 of file table_index.hpp.

void sort (  ) 

Sorts all the elements in the table based on their transformed values as compared with the key_compare function object.

Definition at line 995 of file table_index.hpp.

transform_type transform (  )  const

Definition at line 777 of file table_index.hpp.

void unique (  ) 

Reduces the index to a single value per key.

Definition at line 1003 of file table_index.hpp.

table_index< Key, T, Compare, Transform >::const_iterator upper_bound ( const key_type x  )  const

Precondition:
table must be sorted.
Parameters:
x key value to find within the index
Returns:
The last position where the element transformed to x could be inserted without violating the ordering of the table.

Definition at line 1126 of file table_index.hpp.

table_index< Key, T, Compare, Transform >::iterator upper_bound ( const key_type x  ) 

Precondition:
table must be sorted.
Parameters:
x key value to find within the index
Returns:
The last position where the element transformed to x could be inserted without violating the ordering of the table.

Definition at line 1116 of file table_index.hpp.


Friends And Related Function Documentation

void swap ( adobe::table_index< Key, T, Transform, Compare > &  x,
adobe::table_index< Key, T, Transform, Compare > &  y 
) [friend]

Swaps the contents of two table_indexes.

Parameters:
x the first table_index to swap.
y the second table_index to swap.

Definition at line 779 of file table_index.hpp.

Copyright © 2006-2007 Adobe Systems Incorporated.

Use of this website signifies your agreement to the Terms of Use and Online Privacy Policy.

Search powered by Google