Teuchos - Trilinos Tools Package Version of the Day
Loading...
Searching...
No Matches
Teuchos_map.hpp
Go to the documentation of this file.
1// @HEADER
2// ***********************************************************************
3//
4// Teuchos: Common Tools Package
5// Copyright (2004) Sandia Corporation
6//
7// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8// license for use of this work by or on behalf of the U.S. Government.
9//
10// Redistribution and use in source and binary forms, with or without
11// modification, are permitted provided that the following conditions are
12// met:
13//
14// 1. Redistributions of source code must retain the above copyright
15// notice, this list of conditions and the following disclaimer.
16//
17// 2. Redistributions in binary form must reproduce the above copyright
18// notice, this list of conditions and the following disclaimer in the
19// documentation and/or other materials provided with the distribution.
20//
21// 3. Neither the name of the Corporation nor the names of the
22// contributors may be used to endorse or promote products derived from
23// this software without specific prior written permission.
24//
25// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36//
37// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
38//
39// ***********************************************************************
40// @HEADER
41
42#ifndef TEUCHOS_MAP_H
43#define TEUCHOS_MAP_H
44
50#ifndef TFLOP
51# include <map>
52#endif // NOT TFLOP
53
65namespace Teuchos {
66
67#ifdef TFLOP
68
69template<class Key, class T>
70class std::map {
71public:
72 typedef Key key_type;
73 typedef T mapped_type;
74 typedef std::pair<Key,T> value_type;
75 typedef std::list<value_type> list_t;
76 typedef typename list_t::iterator iterator;
77 typedef typename list_t::const_iterator const_iterator;
78
80
81
83 std::map() {}
84
86 std::map( const std::map<Key,T>& map_in ) : list_( map_in.list_ ) {}
87
89 virtual ~std::map() {}
91
93
94
96 iterator begin() { return list_.begin(); }
97
99 const_iterator begin() const { return list_.begin(); }
100
102 iterator end() { return list_.end(); }
103
105 const_iterator end() const { return list_.end(); }
106
108
112 mapped_type& operator[]( const key_type& k )
113 {
114 iterator itr = find(k);
115 if(itr != end()) return (*itr).second;
116 list_.push_back( value_type( k, T() ) );
117 return list_.back().second;
118 }
120
122
123
125
129 iterator find(const key_type& k)
130 {
131 for( iterator itr = begin(); itr != end(); ++itr ) {
132 if( (*itr).first == k ) {
133 return itr;
134 }
135 }
136 return end();
137 }
138
140
144 const_iterator find(const key_type& k) const
145 {
146 for( const_iterator itr = begin(); itr != end(); ++itr ) {
147 if( (*itr).first == k ) {
148 return itr;
149 }
150 }
151 return end();
152 }
153
154 bool empty() const { return list_.empty(); }
155
157private:
158 list_t list_;
159};
160
161#else
162
163using std::map;
164
165#endif
166
167} // namespace Teuchos
168
169#endif // TEUCHOS_MAP_H
Teuchos header file which uses auto-configuration information to include necessary C++ headers.
This class creates a basic std::map object for platforms where the std::map is deficient,...
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos,...