hash map in STL

Please support our C++ advertiser: Intel Parallel Studio Home
Thread Solved

Join Date: Feb 2009
Posts: 46
Reputation: karthik.c is an unknown quantity at this point 
Solved Threads: 0
karthik.c's Avatar
karthik.c karthik.c is offline Offline
Light Poster

map in STL

 
0
  #1
Mar 5th, 2009
hi guys, im trying to do map in cpp using STL and when i ran a simple program it was showing error that:
error:
nomatchfor'operator<<'in'std::cout<<(&mp0_iter)->std::_Rb_tree_iterator<_Tp>::operator* [with _Tp = std::pair<const int, int>]()'....
my program was like this:
  1. #include<map.h>
  2. #include<iostream.h>
  3.  
  4. int main()
  5. {
  6. map<int,int>::iterator mp0_iter;
  7. map<int,int>mp0;
  8. map<int,int>mp1;
  9.  
  10. mp1.insert(1,13);
  11. mp1.insert(2,16);
  12. mp1.insert(3,17);
  13.  
  14. for(mp0_iter=mp1.begin();mp0_iter!=mp1.end();mp0_iter++)
  15. {
  16. cout<<*mp0_iter<<' ';
  17. }
  18. cout<<endl;
  19.  
  20. return(0);
  21. }
Last edited by karthik.c; Mar 5th, 2009 at 8:07 am.
Reply With Quote Quick reply to this message  
Join Date: Jan 2009
Posts: 46
Reputation: kbshibukumar is an unknown quantity at this point 
Solved Threads: 7
kbshibukumar kbshibukumar is offline Offline
Light Poster

Re: hash map in STL

 
0
  #2
Mar 5th, 2009
The map as a whole can not displayed using cout. Try
cout << *mp0_iter.first() << *mp0_iter.second() << '\n';
Reply With Quote Quick reply to this message  
Join Date: Sep 2004
Posts: 7,697
Reputation: Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute 
Solved Threads: 728
Team Colleague
Narue's Avatar
Narue Narue is offline Offline
Code Goddess

Re: hash map in STL

 
1
  #3
Mar 5th, 2009
>cout << *mp0_iter.first() << *mp0_iter.second() << '\n';
This won't work, for several reasons. To begin with, first and second are not member functions. Also, the member operator binds more tightly than the indirection operator, so you're trying to call the first and second member functions (which still don't exist) on the iterator itself rather than the value type. You need to wrap the indirection in parens:
  1. cout << (*mp0_iter).first << (*mp0_iter).second << '\n';
In sufficiently conforming versions of the standard library, the -> operator is defined and you can use that instead:
  1. cout << mp0_iter->first << mp0_iter->second << '\n';
>mp1.insert(1,13);
>mp1.insert(2,16);
>mp1.insert(3,17);
The map class doesn't have an overload of the insert member function that takes a key/value pair as two arguments. You'd have to create your own pair object first:
  1. mp1.insert ( make_pair ( 1, 13 ) );
  2. mp1.insert ( make_pair ( 2, 16 ) );
  3. mp1.insert ( make_pair ( 3, 17 ) );
But that's effort you can avoid by taking advantage of the subscript operator overload:
  1. mp1[1] = 13;
  2. mp1[2] = 16;
  3. mp1[3] = 17;
I'm here to prove you wrong.
Reply With Quote Quick reply to this message  
Join Date: Feb 2009
Posts: 46
Reputation: karthik.c is an unknown quantity at this point 
Solved Threads: 0
karthik.c's Avatar
karthik.c karthik.c is offline Offline
Light Poster

Re: hash map in STL

 
0
  #4
Mar 6th, 2009
thanks narue ,i tried out both ways of inserting:using pair object and operator overload and program is working fine.
Reply With Quote Quick reply to this message  
Join Date: Feb 2009
Posts: 46
Reputation: karthik.c is an unknown quantity at this point 
Solved Threads: 0
karthik.c's Avatar
karthik.c karthik.c is offline Offline
Light Poster

Re: hash map in STL

 
0
  #5
Mar 6th, 2009
hi again,im having some problem while coding with hash_map
my coding was like this:
  1. #include<iostream>
  2. #include<hash_map>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. typedef pair<int,int>make_pair;
  8. hash_map<int,int>::iterator hmp0_iter;
  9.  
  10. hash_map<int,int>hmp0;
  11.  
  12. hmp0.insert(make_pair(1,78));
  13. hmp0.insert(make_pair(3,34));
  14.  
  15. for(hmp0_iter=hmp0.begin();hmp0_iter!=hmp0.end();hmp0_iter++)
  16. {
  17. cout<<(*hmp0_iter).second<<' ';
  18. }
  19. cout<<endl;
  20.  
  21. return(0);
  22. }
error was like this:
hashdemo.cpp:2:19: hash_map: No such file or directory
hashdemo.cpp: In function `int main()':
hashdemo.cpp:8: error: `hash_map' was not declared in this scope
hashdemo.cpp:8: error: expected primary-expression before "int"
hashdemo.cpp:8: error: expected `;' before "int"
hashdemo.cpp:10: error: expected primary-expression before "int"
hashdemo.cpp:10: error: expected `;' before "int"
hashdemo.cpp:12: error: `hmp0' was not declared in this scope
hashdemo.cpp:15: error: `hmp0_iter' was not declared in this scope

but when i replaced #include<hash_map>with #include<hash_map.h>the program ran and printed the output but it did showed some warnings saying im using deprecated header.

im workin in linux using gcc(version3.4.6)so does it support hashmap??
Reply With Quote Quick reply to this message  
Join Date: Jan 2009
Posts: 46
Reputation: kbshibukumar is an unknown quantity at this point 
Solved Threads: 7
kbshibukumar kbshibukumar is offline Offline
Light Poster

Re: hash map in STL

 
0
  #6
Mar 6th, 2009
I don't know if there is any stl hash_map. U need to use just map instead, with a #include <map>

map<int,int>::iterator hmp0_iter;
map<int,int>hmp0;
Reply With Quote Quick reply to this message  
Join Date: Feb 2009
Posts: 46
Reputation: karthik.c is an unknown quantity at this point 
Solved Threads: 0
karthik.c's Avatar
karthik.c karthik.c is offline Offline
Light Poster

Re: hash map in STL

 
0
  #7
Mar 6th, 2009
hi shibukumar, i actually was trying to program the code which was given in a site where they are using hash_map at the same time they are also saying hashtable Datastructure is not part of c++ standard library.

http://www.tenouk.com/Module29a.html
so what if their is any way to do it??
Reply With Quote Quick reply to this message  
Reply

This thread has been marked solved.
Perhaps start a new thread instead?
Message:



Similar Threads
Other Threads in the C++ Forum
Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC