This is the mail archive of the
libstdc++@sourceware.cygnus.com
mailing list for the libstdc++ project.
re: Basic Question on using libstdc++-v3
- To: libstdc++ at sourceware dot cygnus dot com
- Subject: re: Basic Question on using libstdc++-v3
- From: Meenaradchagan Vishnu <mvishnu at fore dot com>
- Date: Fri, 8 Oct 1999 13:30:43 -0400 (EDT)
- Reply-To: Meenaradchagan Vishnu <mvishnu at fore dot com>
I reinstalled the libstdc++-2.90.6.1 as follows:
mkdir bld-libstdc++
cd bld-libstdc++
../libstdc++2.90.6.1/configure --prifix=/usr/local/H-libstdc++-v3
make
then I logged on as root
and did a
make install
both make check and make check-install passes (except for repeated
messages as follows:
../libstdc++-2.90.6.1/mkcheck: [: %s: integer expression expected
size: illegal option -- A
usage: size [-VoxnfF] file(s)...
size: illegal option -- A
usage: size [-VoxnfF] file(s)...
size: illegal option -- A
usage: size [-VoxnfF] file(s)...)
But I still get the same error messsages as before. I used -v -H this time. I
I am attaching the following files (1) toy program (2) compile error messages
including command line (3) listing of the header file where the error occurs
(viz., /usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map) (It is curious
that the above file which is included in my program has the following
line stating:
/* NOTE: This is an internal header file, included by other STL headers.
* You should not attempt to use it directly.
*/)
Is it possible that this hash_map should in fact be hash_map.h and there
should be another file hash_map which includes this hash_map.h after defining
the macros?
Any help in compiling this file is much appreciated.
Meenan Vishnu
#include <ext/hash_map>
#include <iostream>
static const int N = 100;
struct X
{
int a;
int b;
};
int main()
{
std::hash_map<int, X> hm;
for( int i = 0; i < N; ++i )
{
X x;
x.a = N-i;
x.b = 3*i;
hm[ i ] = x;
}
for( int i = 0; i < N; ++i )
{
std::cout << hm[ i ].a << " - " << hm[ i ].b << std::endl;
}
}
/usr/local/bin/g++ -g -Wall -ftemplate-depth-25 -static -I/usr/local/H-libstdc++-v3/include/g++-v3 -L/usr/local/H-libstdc++-v3/lib -o test_hm test_hm.cc
In file included from test_hm.cc:1:
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:44: syntax error before `template'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:51: parse error before `&'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:52: `operator ==(...)' must have an argument of class or enumerated type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:52: `operator ==(...)' must take exactly two arguments
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:59: parse error before `,'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:61: syntax error before `;'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:64: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:64: `key_type' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:64: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:64: ANSI C++ forbids declaration `key_type' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:67: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:67: `value_type' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:67: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:67: ANSI C++ forbids declaration `value_type' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:68: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:68: `hasher' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:68: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:68: ANSI C++ forbids declaration `hasher' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:69: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:69: `key_equal' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:69: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:69: ANSI C++ forbids declaration `key_equal' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:71: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:71: `size_type' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:71: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:71: ANSI C++ forbids declaration `size_type' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:72: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:72: `difference_type' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:72: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:72: ANSI C++ forbids declaration `difference_type' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:73: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:73: `pointer' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:73: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:73: ANSI C++ forbids declaration `pointer' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:74: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:74: `const_pointer' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:74: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:74: ANSI C++ forbids declaration `const_pointer' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:75: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:75: `reference' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:75: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:75: ANSI C++ forbids declaration `reference' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:76: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:76: `const_reference' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:76: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:76: ANSI C++ forbids declaration `const_reference' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:78: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:78: `iterator' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:78: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:78: ANSI C++ forbids declaration `iterator' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:79: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:79: `const_iterator' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:79: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:79: ANSI C++ forbids declaration `const_iterator' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:81: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:81: `allocator_type' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:81: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:81: ANSI C++ forbids declaration `allocator_type' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:164: `__STD_QUALIFIER' is neither function nor method; cannot be declared friend
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:164: parse error before `operator'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:174: syntax error before `('
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:181: semicolon missing after declaration of `hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map: In method `hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>::hash_map()':
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:88: class `hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>' does not have any field named `_M_ht'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map: In method `hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>::hash_map(int)':
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:90: class `hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>' does not have any field named `_M_ht'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map: In method `hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>::hash_map(int, const int &)':
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:92: class `hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>' does not have any field named `_M_ht'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map: In method `hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>::hash_map(int, const int &, const int &, const int & = int())':
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:95: class `hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>' does not have any field named `_M_ht'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map: In method `hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>::hash_map(const int *, const int *)':
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:120: class `hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>' does not have any field named `_M_ht'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map: In method `hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>::hash_map(const int *, const int *, int)':
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:123: class `hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>' does not have any field named `_M_ht'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map: In method `hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>::hash_map(const int *, const int *, int, const int &)':
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:127: class `hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>' does not have any field named `_M_ht'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map: In method `hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>::hash_map(const int *, const int *, int, const int &, const int &, const int & = int())':
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:132: class `hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>' does not have any field named `_M_ht'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map: In method `hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>::hash_map(int, int)':
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:136: class `hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>' does not have any field named `_M_ht'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map: In method `hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>::hash_map(int, int, int)':
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:139: class `hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>' does not have any field named `_M_ht'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map: In method `hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>::hash_map(int, int, int, const int &)':
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:143: class `hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>' does not have any field named `_M_ht'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map: In method `hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>::hash_map(int, int, int, const int &, const int &, const int & = int())':
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:148: class `hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>' does not have any field named `_M_ht'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map: At top level:
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:181: parse error before `*'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:181: two or more data types in declaration of `insert'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:181: semicolon missing after declaration of `class hash_map<_Key,_Tp,_HashFcn,_EqualKey,_Alloc>'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:184: `const_iterator' was not declared in this scope
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:184: parse error before `,'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map: In function `void insert(...)':
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:185: `_M_ht' undeclared (first use this function)
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:185: (Each undeclared identifier is reported only once
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:185: for each function it appears in.)
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:185: `__f' undeclared (first use this function)
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:185: `__l' undeclared (first use this function)
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map: At top level:
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:187: `iterator' was not declared in this scope
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:187: syntax error before `('
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:190: syntax error before `('
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:191: syntax error before `('
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:194: syntax error before `&'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:198: syntax error before `('
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:200: `iterator' was not declared in this scope
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:200: `iterator' was not declared in this scope
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:200: syntax error before `('
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:202: `const_iterator' was not declared in this scope
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:202: `const_iterator' was not declared in this scope
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:203: syntax error before `('
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:206: syntax error before `('
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:207: `iterator' was not declared in this scope
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:207: parse error before `)'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map: In function `void erase(...)':
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:207: `__it' undeclared (first use this function)
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map: At top level:
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:208: parse error before `,'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map: In function `void erase(...)':
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:208: redefinition of `void erase(...)'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:207: `void erase(...)' previously defined here
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map: At top level:
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:211: `size_type' was not declared in this scope
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:211: parse error before `)'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map: In function `void resize(...)':
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:211: `__hint' undeclared (first use this function)
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map: At top level:
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:212: syntax error before `('
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:213: syntax error before `('
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:214: syntax error before `('
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:248: `hash' was not declared in this scope
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:248: parse error before `>'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:249: `equal_to' was not declared in this scope
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:249: parse error before `>'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:249: conflicting types for `class _EqualKey (* __STL_DEPENDENT_DEFAULT_TMPL)(...)'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:248: previous declaration as `class _HashFcn (* __STL_DEPENDENT_DEFAULT_TMPL)(...)'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:250: parse error before `('
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:255: parse error before `&'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:256: `operator ==(...)' must have an argument of class or enumerated type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:256: `operator ==(...)' must take exactly two arguments
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:263: parse error before `,'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:266: syntax error before `;'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:269: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:269: `key_type' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:269: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:269: ANSI C++ forbids declaration `key_type' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:269: invalid member template declaration `hash_multimap::key_type'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:270: invalid member template declaration `hash_multimap::data_type'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:271: invalid member template declaration `hash_multimap::mapped_type'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:272: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:272: `value_type' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:272: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:272: ANSI C++ forbids declaration `value_type' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:272: invalid member template declaration `hash_multimap::value_type'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:273: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:273: `hasher' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:273: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:273: ANSI C++ forbids declaration `hasher' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:273: invalid member template declaration `hash_multimap::hasher'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:274: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:274: `key_equal' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:274: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:274: ANSI C++ forbids declaration `key_equal' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:274: invalid member template declaration `hash_multimap::key_equal'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:276: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:276: `size_type' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:276: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:276: ANSI C++ forbids declaration `size_type' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:276: invalid member template declaration `hash_multimap::size_type'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:277: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:277: `difference_type' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:277: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:277: ANSI C++ forbids declaration `difference_type' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:277: invalid member template declaration `hash_multimap::difference_type'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:278: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:278: `pointer' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:278: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:278: ANSI C++ forbids declaration `pointer' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:278: invalid member template declaration `hash_multimap::pointer'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:279: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:279: `const_pointer' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:279: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:279: ANSI C++ forbids declaration `const_pointer' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:279: invalid member template declaration `hash_multimap::const_pointer'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:280: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:280: `reference' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:280: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:280: ANSI C++ forbids declaration `reference' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:280: invalid member template declaration `hash_multimap::reference'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:281: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:281: `const_reference' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:281: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:281: ANSI C++ forbids declaration `const_reference' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:281: invalid member template declaration `hash_multimap::const_reference'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:283: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:283: `iterator' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:283: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:283: ANSI C++ forbids declaration `iterator' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:283: invalid member template declaration `hash_multimap::iterator'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:284: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:284: `const_iterator' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:284: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:284: ANSI C++ forbids declaration `const_iterator' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:284: invalid member template declaration `hash_multimap::const_iterator'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:286: `_Ht' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:286: `allocator_type' is not a class or namespace
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:286: `_Ht' fails to be a typedef or built in type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:286: ANSI C++ forbids declaration `allocator_type' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:286: invalid member template declaration `hash_multimap::allocator_type'
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:288: syntax error before `('
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:289: syntax error before `('
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:289: ANSI C++ forbids declaration `key_eq' with no type
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:289: non-member function `key_eq()' cannot have `const' method qualifier
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map: In function `int key_eq()':
/usr/local/H-libstdc++-v3/include/g++-v3/ext/hash_map:289: confused by earlier errors, bailing out
make: *** [test_hm] Error 1
/*
* Copyright (c) 1996
* Silicon Graphics Computer Systems, Inc.
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Silicon Graphics makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*
*
* Copyright (c) 1994
* Hewlett-Packard Company
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Hewlett-Packard Company makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*
*/
/* NOTE: This is an internal header file, included by other STL headers.
* You should not attempt to use it directly.
*/
#ifndef __SGI_STL_INTERNAL_HASH_MAP_H
#define __SGI_STL_INTERNAL_HASH_MAP_H
__STL_BEGIN_NAMESPACE
#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
#pragma set woff 1174
#pragma set woff 1375
#endif
// Forward declaration of equality operator; needed for friend declaration.
template <class _Key, class _Tp,
class _HashFcn __STL_DEPENDENT_DEFAULT_TMPL(hash<_Key>),
class _EqualKey __STL_DEPENDENT_DEFAULT_TMPL(equal_to<_Key>),
class _Alloc = __STL_DEFAULT_ALLOCATOR(_Tp) >
class hash_map;
template <class _Key, class _Tp, class _HashFn, class _EqKey, class _Alloc>
inline bool operator==(const hash_map<_Key, _Tp, _HashFn, _EqKey, _Alloc>&,
const hash_map<_Key, _Tp, _HashFn, _EqKey, _Alloc>&);
template <class _Key, class _Tp, class _HashFcn, class _EqualKey,
class _Alloc>
class hash_map
{
private:
typedef hashtable<pair<const _Key,_Tp>,_Key,_HashFcn,
_Select1st<pair<const _Key,_Tp> >,_EqualKey,_Alloc> _Ht;
_Ht _M_ht;
public:
typedef typename _Ht::key_type key_type;
typedef _Tp data_type;
typedef _Tp mapped_type;
typedef typename _Ht::value_type value_type;
typedef typename _Ht::hasher hasher;
typedef typename _Ht::key_equal key_equal;
typedef typename _Ht::size_type size_type;
typedef typename _Ht::difference_type difference_type;
typedef typename _Ht::pointer pointer;
typedef typename _Ht::const_pointer const_pointer;
typedef typename _Ht::reference reference;
typedef typename _Ht::const_reference const_reference;
typedef typename _Ht::iterator iterator;
typedef typename _Ht::const_iterator const_iterator;
typedef typename _Ht::allocator_type allocator_type;
hasher hash_funct() const { return _M_ht.hash_funct(); }
key_equal key_eq() const { return _M_ht.key_eq(); }
allocator_type get_allocator() const { return _M_ht.get_allocator(); }
public:
hash_map() : _M_ht(100, hasher(), key_equal(), allocator_type()) {}
explicit hash_map(size_type __n)
: _M_ht(__n, hasher(), key_equal(), allocator_type()) {}
hash_map(size_type __n, const hasher& __hf)
: _M_ht(__n, __hf, key_equal(), allocator_type()) {}
hash_map(size_type __n, const hasher& __hf, const key_equal& __eql,
const allocator_type& __a = allocator_type())
: _M_ht(__n, __hf, __eql, __a) {}
#ifdef __STL_MEMBER_TEMPLATES
template <class _InputIterator>
hash_map(_InputIterator __f, _InputIterator __l)
: _M_ht(100, hasher(), key_equal(), allocator_type())
{ _M_ht.insert_unique(__f, __l); }
template <class _InputIterator>
hash_map(_InputIterator __f, _InputIterator __l, size_type __n)
: _M_ht(__n, hasher(), key_equal(), allocator_type())
{ _M_ht.insert_unique(__f, __l); }
template <class _InputIterator>
hash_map(_InputIterator __f, _InputIterator __l, size_type __n,
const hasher& __hf)
: _M_ht(__n, __hf, key_equal(), allocator_type())
{ _M_ht.insert_unique(__f, __l); }
template <class _InputIterator>
hash_map(_InputIterator __f, _InputIterator __l, size_type __n,
const hasher& __hf, const key_equal& __eql,
const allocator_type& __a = allocator_type())
: _M_ht(__n, __hf, __eql, __a)
{ _M_ht.insert_unique(__f, __l); }
#else
hash_map(const value_type* __f, const value_type* __l)
: _M_ht(100, hasher(), key_equal(), allocator_type())
{ _M_ht.insert_unique(__f, __l); }
hash_map(const value_type* __f, const value_type* __l, size_type __n)
: _M_ht(__n, hasher(), key_equal(), allocator_type())
{ _M_ht.insert_unique(__f, __l); }
hash_map(const value_type* __f, const value_type* __l, size_type __n,
const hasher& __hf)
: _M_ht(__n, __hf, key_equal(), allocator_type())
{ _M_ht.insert_unique(__f, __l); }
hash_map(const value_type* __f, const value_type* __l, size_type __n,
const hasher& __hf, const key_equal& __eql,
const allocator_type& __a = allocator_type())
: _M_ht(__n, __hf, __eql, __a)
{ _M_ht.insert_unique(__f, __l); }
hash_map(const_iterator __f, const_iterator __l)
: _M_ht(100, hasher(), key_equal(), allocator_type())
{ _M_ht.insert_unique(__f, __l); }
hash_map(const_iterator __f, const_iterator __l, size_type __n)
: _M_ht(__n, hasher(), key_equal(), allocator_type())
{ _M_ht.insert_unique(__f, __l); }
hash_map(const_iterator __f, const_iterator __l, size_type __n,
const hasher& __hf)
: _M_ht(__n, __hf, key_equal(), allocator_type())
{ _M_ht.insert_unique(__f, __l); }
hash_map(const_iterator __f, const_iterator __l, size_type __n,
const hasher& __hf, const key_equal& __eql,
const allocator_type& __a = allocator_type())
: _M_ht(__n, __hf, __eql, __a)
{ _M_ht.insert_unique(__f, __l); }
#endif /*__STL_MEMBER_TEMPLATES */
public:
size_type size() const { return _M_ht.size(); }
size_type max_size() const { return _M_ht.max_size(); }
bool empty() const { return _M_ht.empty(); }
void swap(hash_map& __hs) { _M_ht.swap(__hs._M_ht); }
#ifdef __STL_MEMBER_TEMPLATES
template <class _K1, class _T1, class _HF, class _EqK, class _Al>
friend bool operator== (const hash_map<_K1, _T1, _HF, _EqK, _Al>&,
const hash_map<_K1, _T1, _HF, _EqK, _Al>&);
#else /* __STL_MEMBER_TEMPLATES */
friend bool __STD_QUALIFIER
operator== __STL_NULL_TMPL_ARGS (const hash_map&, const hash_map&);
#endif /* __STL_MEMBER_TEMPLATES */
iterator begin() { return _M_ht.begin(); }
iterator end() { return _M_ht.end(); }
const_iterator begin() const { return _M_ht.begin(); }
const_iterator end() const { return _M_ht.end(); }
public:
pair<iterator,bool> insert(const value_type& __obj)
{ return _M_ht.insert_unique(__obj); }
#ifdef __STL_MEMBER_TEMPLATES
template <class _InputIterator>
void insert(_InputIterator __f, _InputIterator __l)
{ _M_ht.insert_unique(__f,__l); }
#else
void insert(const value_type* __f, const value_type* __l) {
_M_ht.insert_unique(__f,__l);
}
void insert(const_iterator __f, const_iterator __l)
{ _M_ht.insert_unique(__f, __l); }
#endif /*__STL_MEMBER_TEMPLATES */
pair<iterator,bool> insert_noresize(const value_type& __obj)
{ return _M_ht.insert_unique_noresize(__obj); }
iterator find(const key_type& __key) { return _M_ht.find(__key); }
const_iterator find(const key_type& __key) const
{ return _M_ht.find(__key); }
_Tp& operator[](const key_type& __key) {
return _M_ht.find_or_insert(value_type(__key, _Tp())).second;
}
size_type count(const key_type& __key) const { return _M_ht.count(__key); }
pair<iterator, iterator> equal_range(const key_type& __key)
{ return _M_ht.equal_range(__key); }
pair<const_iterator, const_iterator>
equal_range(const key_type& __key) const
{ return _M_ht.equal_range(__key); }
size_type erase(const key_type& __key) {return _M_ht.erase(__key); }
void erase(iterator __it) { _M_ht.erase(__it); }
void erase(iterator __f, iterator __l) { _M_ht.erase(__f, __l); }
void clear() { _M_ht.clear(); }
void resize(size_type __hint) { _M_ht.resize(__hint); }
size_type bucket_count() const { return _M_ht.bucket_count(); }
size_type max_bucket_count() const { return _M_ht.max_bucket_count(); }
size_type elems_in_bucket(size_type __n) const
{ return _M_ht.elems_in_bucket(__n); }
};
template <class _Key, class _Tp, class _HashFcn, class _EqlKey, class _Alloc>
inline bool
operator==(const hash_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm1,
const hash_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm2)
{
return __hm1._M_ht == __hm2._M_ht;
}
#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
template <class _Key, class _Tp, class _HashFcn, class _EqlKey, class _Alloc>
inline bool
operator!=(const hash_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm1,
const hash_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm2) {
return !(__hm1 == __hm2);
}
template <class _Key, class _Tp, class _HashFcn, class _EqlKey, class _Alloc>
inline void
swap(hash_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm1,
hash_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm2)
{
__hm1.swap(__hm2);
}
#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */
// Forward declaration of equality operator; needed for friend declaration.
template <class _Key, class _Tp,
class _HashFcn __STL_DEPENDENT_DEFAULT_TMPL(hash<_Key>),
class _EqualKey __STL_DEPENDENT_DEFAULT_TMPL(equal_to<_Key>),
class _Alloc = __STL_DEFAULT_ALLOCATOR(_Tp) >
class hash_multimap;
template <class _Key, class _Tp, class _HF, class _EqKey, class _Alloc>
inline bool
operator==(const hash_multimap<_Key,_Tp,_HF,_EqKey,_Alloc>& __hm1,
const hash_multimap<_Key,_Tp,_HF,_EqKey,_Alloc>& __hm2);
template <class _Key, class _Tp, class _HashFcn, class _EqualKey,
class _Alloc>
class hash_multimap
{
private:
typedef hashtable<pair<const _Key, _Tp>, _Key, _HashFcn,
_Select1st<pair<const _Key, _Tp> >, _EqualKey, _Alloc>
_Ht;
_Ht _M_ht;
public:
typedef typename _Ht::key_type key_type;
typedef _Tp data_type;
typedef _Tp mapped_type;
typedef typename _Ht::value_type value_type;
typedef typename _Ht::hasher hasher;
typedef typename _Ht::key_equal key_equal;
typedef typename _Ht::size_type size_type;
typedef typename _Ht::difference_type difference_type;
typedef typename _Ht::pointer pointer;
typedef typename _Ht::const_pointer const_pointer;
typedef typename _Ht::reference reference;
typedef typename _Ht::const_reference const_reference;
typedef typename _Ht::iterator iterator;
typedef typename _Ht::const_iterator const_iterator;
typedef typename _Ht::allocator_type allocator_type;
hasher hash_funct() const { return _M_ht.hash_funct(); }
key_equal key_eq() const { return _M_ht.key_eq(); }
allocator_type get_allocator() const { return _M_ht.get_allocator(); }
public:
hash_multimap() : _M_ht(100, hasher(), key_equal(), allocator_type()) {}
explicit hash_multimap(size_type __n)
: _M_ht(__n, hasher(), key_equal(), allocator_type()) {}
hash_multimap(size_type __n, const hasher& __hf)
: _M_ht(__n, __hf, key_equal(), allocator_type()) {}
hash_multimap(size_type __n, const hasher& __hf, const key_equal& __eql,
const allocator_type& __a = allocator_type())
: _M_ht(__n, __hf, __eql, __a) {}
#ifdef __STL_MEMBER_TEMPLATES
template <class _InputIterator>
hash_multimap(_InputIterator __f, _InputIterator __l)
: _M_ht(100, hasher(), key_equal(), allocator_type())
{ _M_ht.insert_equal(__f, __l); }
template <class _InputIterator>
hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n)
: _M_ht(__n, hasher(), key_equal(), allocator_type())
{ _M_ht.insert_equal(__f, __l); }
template <class _InputIterator>
hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n,
const hasher& __hf)
: _M_ht(__n, __hf, key_equal(), allocator_type())
{ _M_ht.insert_equal(__f, __l); }
template <class _InputIterator>
hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n,
const hasher& __hf, const key_equal& __eql,
const allocator_type& __a = allocator_type())
: _M_ht(__n, __hf, __eql, __a)
{ _M_ht.insert_equal(__f, __l); }
#else
hash_multimap(const value_type* __f, const value_type* __l)
: _M_ht(100, hasher(), key_equal(), allocator_type())
{ _M_ht.insert_equal(__f, __l); }
hash_multimap(const value_type* __f, const value_type* __l, size_type __n)
: _M_ht(__n, hasher(), key_equal(), allocator_type())
{ _M_ht.insert_equal(__f, __l); }
hash_multimap(const value_type* __f, const value_type* __l, size_type __n,
const hasher& __hf)
: _M_ht(__n, __hf, key_equal(), allocator_type())
{ _M_ht.insert_equal(__f, __l); }
hash_multimap(const value_type* __f, const value_type* __l, size_type __n,
const hasher& __hf, const key_equal& __eql,
const allocator_type& __a = allocator_type())
: _M_ht(__n, __hf, __eql, __a)
{ _M_ht.insert_equal(__f, __l); }
hash_multimap(const_iterator __f, const_iterator __l)
: _M_ht(100, hasher(), key_equal(), allocator_type())
{ _M_ht.insert_equal(__f, __l); }
hash_multimap(const_iterator __f, const_iterator __l, size_type __n)
: _M_ht(__n, hasher(), key_equal(), allocator_type())
{ _M_ht.insert_equal(__f, __l); }
hash_multimap(const_iterator __f, const_iterator __l, size_type __n,
const hasher& __hf)
: _M_ht(__n, __hf, key_equal(), allocator_type())
{ _M_ht.insert_equal(__f, __l); }
hash_multimap(const_iterator __f, const_iterator __l, size_type __n,
const hasher& __hf, const key_equal& __eql,
const allocator_type& __a = allocator_type())
: _M_ht(__n, __hf, __eql, __a)
{ _M_ht.insert_equal(__f, __l); }
#endif /*__STL_MEMBER_TEMPLATES */
public:
size_type size() const { return _M_ht.size(); }
size_type max_size() const { return _M_ht.max_size(); }
bool empty() const { return _M_ht.empty(); }
void swap(hash_multimap& __hs) { _M_ht.swap(__hs._M_ht); }
#ifdef __STL_MEMBER_TEMPLATES
template <class _K1, class _T1, class _HF, class _EqK, class _Al>
friend bool operator== (const hash_multimap<_K1, _T1, _HF, _EqK, _Al>&,
const hash_multimap<_K1, _T1, _HF, _EqK, _Al>&);
#else /* __STL_MEMBER_TEMPLATES */
friend bool __STD_QUALIFIER
operator== __STL_NULL_TMPL_ARGS (const hash_multimap&,const hash_multimap&);
#endif /* __STL_MEMBER_TEMPLATES */
iterator begin() { return _M_ht.begin(); }
iterator end() { return _M_ht.end(); }
const_iterator begin() const { return _M_ht.begin(); }
const_iterator end() const { return _M_ht.end(); }
public:
iterator insert(const value_type& __obj)
{ return _M_ht.insert_equal(__obj); }
#ifdef __STL_MEMBER_TEMPLATES
template <class _InputIterator>
void insert(_InputIterator __f, _InputIterator __l)
{ _M_ht.insert_equal(__f,__l); }
#else
void insert(const value_type* __f, const value_type* __l) {
_M_ht.insert_equal(__f,__l);
}
void insert(const_iterator __f, const_iterator __l)
{ _M_ht.insert_equal(__f, __l); }
#endif /*__STL_MEMBER_TEMPLATES */
iterator insert_noresize(const value_type& __obj)
{ return _M_ht.insert_equal_noresize(__obj); }
iterator find(const key_type& __key) { return _M_ht.find(__key); }
const_iterator find(const key_type& __key) const
{ return _M_ht.find(__key); }
size_type count(const key_type& __key) const { return _M_ht.count(__key); }
pair<iterator, iterator> equal_range(const key_type& __key)
{ return _M_ht.equal_range(__key); }
pair<const_iterator, const_iterator>
equal_range(const key_type& __key) const
{ return _M_ht.equal_range(__key); }
size_type erase(const key_type& __key) {return _M_ht.erase(__key); }
void erase(iterator __it) { _M_ht.erase(__it); }
void erase(iterator __f, iterator __l) { _M_ht.erase(__f, __l); }
void clear() { _M_ht.clear(); }
public:
void resize(size_type __hint) { _M_ht.resize(__hint); }
size_type bucket_count() const { return _M_ht.bucket_count(); }
size_type max_bucket_count() const { return _M_ht.max_bucket_count(); }
size_type elems_in_bucket(size_type __n) const
{ return _M_ht.elems_in_bucket(__n); }
};
template <class _Key, class _Tp, class _HF, class _EqKey, class _Alloc>
inline bool
operator==(const hash_multimap<_Key,_Tp,_HF,_EqKey,_Alloc>& __hm1,
const hash_multimap<_Key,_Tp,_HF,_EqKey,_Alloc>& __hm2)
{
return __hm1._M_ht == __hm2._M_ht;
}
#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDER
template <class _Key, class _Tp, class _HF, class _EqKey, class _Alloc>
inline bool
operator!=(const hash_multimap<_Key,_Tp,_HF,_EqKey,_Alloc>& __hm1,
const hash_multimap<_Key,_Tp,_HF,_EqKey,_Alloc>& __hm2) {
return !(__hm1 == __hm2);
}
template <class _Key, class _Tp, class _HashFcn, class _EqlKey, class _Alloc>
inline void
swap(hash_multimap<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm1,
hash_multimap<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>& __hm2)
{
__hm1.swap(__hm2);
}
#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER */
// Specialization of insert_iterator so that it will work for hash_map
// and hash_multimap.
#ifdef __STL_CLASS_PARTIAL_SPECIALIZATION
template <class _Key, class _Tp, class _HashFn, class _EqKey, class _Alloc>
class insert_iterator<hash_map<_Key, _Tp, _HashFn, _EqKey, _Alloc> > {
protected:
typedef hash_map<_Key, _Tp, _HashFn, _EqKey, _Alloc> _Container;
_Container* container;
public:
typedef _Container container_type;
typedef output_iterator_tag iterator_category;
typedef void value_type;
typedef void difference_type;
typedef void pointer;
typedef void reference;
insert_iterator(_Container& __x) : container(&__x) {}
insert_iterator(_Container& __x, typename _Container::iterator)
: container(&__x) {}
insert_iterator<_Container>&
operator=(const typename _Container::value_type& __value) {
container->insert(__value);
return *this;
}
insert_iterator<_Container>& operator*() { return *this; }
insert_iterator<_Container>& operator++() { return *this; }
insert_iterator<_Container>& operator++(int) { return *this; }
};
template <class _Key, class _Tp, class _HashFn, class _EqKey, class _Alloc>
class insert_iterator<hash_multimap<_Key, _Tp, _HashFn, _EqKey, _Alloc> > {
protected:
typedef hash_multimap<_Key, _Tp, _HashFn, _EqKey, _Alloc> _Container;
_Container* container;
typename _Container::iterator iter;
public:
typedef _Container container_type;
typedef output_iterator_tag iterator_category;
typedef void value_type;
typedef void difference_type;
typedef void pointer;
typedef void reference;
insert_iterator(_Container& __x) : container(&__x) {}
insert_iterator(_Container& __x, typename _Container::iterator)
: container(&__x) {}
insert_iterator<_Container>&
operator=(const typename _Container::value_type& __value) {
container->insert(__value);
return *this;
}
insert_iterator<_Container>& operator*() { return *this; }
insert_iterator<_Container>& operator++() { return *this; }
insert_iterator<_Container>& operator++(int) { return *this; }
};
#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */
#if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32)
#pragma reset woff 1174
#pragma reset woff 1375
#endif
__STL_END_NAMESPACE
#endif /* __SGI_STL_INTERNAL_HASH_MAP_H */
// Local Variables:
// mode:C++
// End: