Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > hash_set was not declared even I #include<hash_set>

Reply
Thread Tools

hash_set was not declared even I #include<hash_set>

 
 
eric
Guest
Posts: n/a
 
      07-12-2011
Dear advanced c/g++ programers:
I tried the following code
-----------------------------------------------------------------------------------------
// Example 6-8 Storing strings in a hast_set
#include <iostream>
#include <string>
#include <hash_set>
using namespace std;

int main() {

hash_set<std::string> hsString;
string s = "bravo";

hsString.insert(s);
s = "alpha";
hsString.insert(s);
s = "charlie";
hsString.insert(s);

for (hash_set<string>::const_iterator p = hsString.begin();
p != hsString.end(); ++p)
cout << *p << endl; // Note that these aren't guaranteed
// to be in sorted order
}
---------------------------------------------------------------------------------------------------
but I got the following compile error(g++ 4.5.2)
----------------------------------------------------------------
eric@eric-laptop:~/cppcookbook/ch6$ g++ -Wno-deprecated Example6-8.cpp
Example6-8.cpp: In function ‘int main()’:
Example6-8.cpp:9:3: error: ‘hash_set’ was not declared in this scope
Example6-8.cpp:9:23: error: expected primary-expression before ‘>’
token
Example6-8.cpp:9:25: error: ‘hsString’ was not declared in this scope
Example6-8.cpp:18:23: error: expected primary-expression before ‘>’
token
Example6-8.cpp:18:24: error: ‘::const_iterator’ has not been declared
Example6-8.cpp:18:41: error: expected ‘;’ before ‘p’
Example6-8.cpp:19:8: error: ‘p’ was not declared in this scope
eric@eric-laptop:~/cppcookbook/ch6$
---------------------------------------------------------------------
your can get the code to test by yourself
source code
http://examples.oreilly.com/9780596007614/

Thanks your help a lot in advance, Eric
 
Reply With Quote
 
 
 
 
Michael DOUBEZ
Guest
Posts: n/a
 
      07-12-2011
On Jul 12, 8:42*am, eric <(E-Mail Removed)> wrote:
> * I tried the following code

[snip]
> #include <string>
> #include <hash_set>
> using namespace std;

[snip]
> * hash_set<std::string> hsString;

[snip]
> Thanks your help a lot in advance, Eric


hash_set is not part of c++. It was specified in STL SGI but was not
included in the standard. g++ provides it as a backward compatibility
in the namespace __gnu_cxx.

Add:
using __gnu_cxx::hash_set;

Note that no default hash function is provided for string, you have to
define it:
namespace __gnu_cxx {
template<> struct hash< std::string > {
size_t operator()( const std::string& x ) const {
return hash< const char* >()( x.c_str() );
}
};
}

--
Michael
 
Reply With Quote
 
 
 
 
Miles Bader
Guest
Posts: n/a
 
      07-12-2011
Michael DOUBEZ <(E-Mail Removed)> writes:
> hash_set is not part of c++. It was specified in STL SGI but was not
> included in the standard. g++ provides it as a backward compatibility
> in the namespace __gnu_cxx.


For a non-ancient version of g++ (or any other compiler with
sufficient c++0x support), wouldn't it be better to just use
"unordered_set" instead? I thought that was basically just hash_set
with a different name (but an actual part of the standard)...

-Miles

--
It wasn't the Exxon Valdez captain's driving that caused the Alaskan oil spill.
It was yours. [Greenpeace advertisement, New York Times, 25 February 1990]
 
Reply With Quote
 
Michael DOUBEZ
Guest
Posts: n/a
 
      07-12-2011
On Jul 12, 10:19*am, Miles Bader <(E-Mail Removed)> wrote:
> Michael DOUBEZ <(E-Mail Removed)> writes:
> > hash_set is not part of c++. It was specified in STL SGI but was not
> > included in the standard. g++ provides it as a backward compatibility
> > in the namespace __gnu_cxx.

>
> For a non-ancient version of g++ (or any other compiler with
> sufficient c++0x support), wouldn't it be better to just use
> "unordered_set" instead?


Yes. Even TR1 support is enough.

>*I thought that was basically just hash_set
> with a different name (but an actual part of the standard)...


But the OP is trying to compile examples from C++CookBook.

--
Michael
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
CPU Usage frequently 100% even though it seems not even close tototal memory Newcomer Computer Support 3 11-15-2009 06:51 AM
CPU Usage frequently 100% even though it seems not even close tototal memory Newcomer Computer Support 0 11-14-2009 11:21 PM
hash_set<string> declared deprecated zs C++ 1 04-14-2006 09:05 AM
declared or not declared ? JohnZing ASP .Net 3 02-05-2006 08:38 PM
Even older fart, even newer newbie Stan Goodman Java 11 07-04-2003 07:32 AM



Advertisments