473,386 Members | 1,798 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,386 software developers and data experts.

Hash map question.

I've searched google for help with this one, but I haven't found it yet.
What I want is a hash map this looks like:
__gnu_cxx::hash_map<string, ArcNode> ArcNodeMap;

ArcNode is a class. It looks something like this:

class ArcNode
{
private:
// communication objects
int fdSocket;
public:
ArcNode();
~ArcNode();
int write(string);
int read(string&);
int open(string);
int state();

};

But when I try to compile I get:
In file included from main.cpp:3:
/usr/include/c++/3.2.2/bits/stl_pair.h: In instantiation of
`std::pair<const std::string, ArcNode&>':
/usr/include/c++/3.2.2/ext/stl_hashtable.h:266: instantiated from
`std::_Select1st<std::pair<const std::string, ArcNode&> >'
/usr/include/c++/3.2.2/ext/stl_hashtable.h:266: instantiated from
`__gnu_cxx::hashtable<std::pair<const std::string, ArcNode&>,
std::string, __gnu_cxx::hash<std::string>,
std::_Select1st<std::pair<const std::string, ArcNode&> >,
std::equal_to<std::string>, std::allocator<ArcNode&> >'
/usr/include/c++/3.2.2/ext/hash_map:101: instantiated from
`__gnu_cxx::hash_map<std::string, ArcNode&,
__gnu_cxx::hash<std::string>, std::equal_to<std::string>,
std::allocator<ArcNode&> >'
loggerbase.h:48: instantiated from here
/usr/include/c++/3.2.2/bits/stl_pair.h:84: forming reference to
reference type
`ArcNode&'
/usr/include/c++/3.2.2/ext/hash_map: In instantiation of
`__gnu_cxx::hash_map<std::string, ArcNode&,
__gnu_cxx::hash<std::string>, std::equal_to<std::string>,
std::allocator<ArcNode&> >':
loggerbase.h:48: instantiated from here
/usr/include/c++/3.2.2/ext/hash_map:182: forming reference to reference
type `
ArcNode&'
make: *** [logger] Error 1

I don't understand the reference to reference error message. Can
someone tell me what I'm doing wrong. A pointer to a tutorial that
discusses how to put objects into a hash_map would also be helpful.

Thanks,
Jim.

--
Jim Lynch
k4***@qsl.net

Jul 22 '05 #1
3 2787
Jim Lynch wrote:
I've searched google for help with this one, but I haven't found it
yet. What I want is a hash map this looks like:
__gnu_cxx::hash_map<string, ArcNode> ArcNodeMap;

<snip>

"hash_map" is not Standard C++. Please consult a group for your library.

- Pete
Jul 22 '05 #2
Jim Lynch wrote:
I've searched google for help with this one, but I haven't found it yet.
What I want is a hash map this looks like:
__gnu_cxx::hash_map<string, ArcNode> ArcNodeMap;
What you seem to have instead is
`__gnu_cxx::hash_map<std::string, ArcNode&,
__gnu_cxx::hash<std::string>, std::equal_to<std::string>,
std::allocator<ArcNode&> >'


(I might be wrong about this; you didn't post your code and I don't know
the gnu hash_map implementation well enough to be able to say for sure
that it doesn't go around adding ampersands willy-nilly like that. I'd
be surprised though.)

Don't use a reference type as the second template argument. Reference
types do not model the concepts required (Assignable for a start).

Ideally you could read about this at, for example,
http://www.sgi.com/tech/stl/PairAsso...Container.html

Perhaps best not to take the information from there too seriously in
this case - the basic situation appears to be:

(i) Pair Associative Container is a refinement of Container;
(ii) The value_type of a Container is required to be Assignable;
(iii) The value_type of a Pair Associative Container is required
to be std::pair <const key_type, data_type>;
(iv) std::pair <const key_type, data_type> is not Assignable.

Therefore 2+2=5, green is pink, and main returns void, QED.

--
Regards,
Buster.
Jul 22 '05 #3
Jim Lynch wrote:
I've searched google for help with this one, but I haven't found it yet.
What I want is a hash map this looks like:
__gnu_cxx::hash_map<string, ArcNode> ArcNodeMap;

Try std::hash_map<std::string, ArcNode> ArcNodeMap;

Although hash_map is not part of the STL (as approved by the standard),
I know some implementations include it in this namespace. Give it a try.
ArcNode is a class. It looks something like this:

class ArcNode
{
private:
// communication objects
int fdSocket;
public:
ArcNode();
~ArcNode();
int write(string);
int read(string&);
int open(string);
int state();

};

But when I try to compile I get:
In file included from main.cpp:3:
/usr/include/c++/3.2.2/bits/stl_pair.h: In instantiation of
`std::pair<const std::string, ArcNode&>':
/usr/include/c++/3.2.2/ext/stl_hashtable.h:266: instantiated from
`std::_Select1st<std::pair<const std::string, ArcNode&> >'
/usr/include/c++/3.2.2/ext/stl_hashtable.h:266: instantiated from
`__gnu_cxx::hashtable<std::pair<const std::string, ArcNode&>,
std::string, __gnu_cxx::hash<std::string>,
std::_Select1st<std::pair<const std::string, ArcNode&> >,
std::equal_to<std::string>, std::allocator<ArcNode&> >'
/usr/include/c++/3.2.2/ext/hash_map:101: instantiated from
`__gnu_cxx::hash_map<std::string, ArcNode&,
__gnu_cxx::hash<std::string>, std::equal_to<std::string>,
std::allocator<ArcNode&> >'
loggerbase.h:48: instantiated from here
/usr/include/c++/3.2.2/bits/stl_pair.h:84: forming reference to
reference type
`ArcNode&'
/usr/include/c++/3.2.2/ext/hash_map: In instantiation of
`__gnu_cxx::hash_map<std::string, ArcNode&,
__gnu_cxx::hash<std::string>, std::equal_to<std::string>,
std::allocator<ArcNode&> >':
loggerbase.h:48: instantiated from here
/usr/include/c++/3.2.2/ext/hash_map:182: forming reference to reference
type `
ArcNode&'
make: *** [logger] Error 1


You need to post code here. This means that whatever you are trying to
do, it is trying to acquire a reference to a reference, which is illegal
in C++.

Jorge L.
Jul 22 '05 #4

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

5
by: R. Rajesh Jeba Anbiah | last post by:
I could see that it is possible to have hash array using objects like var hash = {"a" : "1", "b" : "2"}; Couldn't still findout how to declare hash array in Array. var arr = new Array("a" : "1",...
8
by: Michael B Allen | last post by:
I would like to know your preferences regarding a C API for a hash map. Specifically, when inserting a data item into a hash map there are two special cases that require consideration. 1) If two...
2
by: johnnyG | last post by:
Greetings, I'm studying for the 70-330 Exam using the MS Press book by Tony Northrup and there are 2 side-by-side examples of using the SHA1CryptoServiceProvider to create a hash value from a...
12
by: Arash Partow | last post by:
Hi all, I've ported various hash functions to python if anyone is interested: def RSHash(key): a = 378551 b = 63689 hash = 0
21
by: Johan Tibell | last post by:
I would be grateful if someone had a minute or two to review my hash table implementation. It's not yet commented but hopefully it's short and idiomatic enough to be readable. Some of the code...
6
by: raymond | last post by:
Hi, I'm going out of my mind trying to figure this problem out. To save it, I figured I'd ask for some help :) I'm trying to create a hash with name/answer pairs. I retrieve a person's userid...
2
by: =?Utf-8?B?TW91dGhPZk1hZG5lc3M=?= | last post by:
How can I add an MD5 hash to XMLSerializer.Serialize without corrupting the content of the file; then how to read it back to verify is correct? I'd like to code up something (see below) that...
3
by: digz | last post by:
This is a simple case of a problem I am having with using char* in a hash_map, The code prints the size correctly( 3) and it should print three lines of output but is printing only two. I do not...
5
by: Jeff | last post by:
Lets say we have what I would call a "hash": var HASH =new Array(); HASH='first'; HASH='second'; HASH='third'; I'd like to return that as JSON data. Is there a direct way to do that?
2
by: joe shoemaker | last post by:
I would like to convert url into md5 hash. My question is that md5 hash will create collision at 2^64. If you do long(value,16), where value is the md5 hash string, would value returned from...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.