I am new to C++ coding. I want to know how hash_map and list can work together.
My requirement is:
I have a structure with address elements, name
My hash key should be name of address object.
Using the key I should find out structure.
I have dynamic list for address object.
I am got struck up getting hash values from hash_map iterator.
Can anyone help me in this regard?
I wrote some code, but it is not complete
#include<stdio.h>
#include<string.h>
#include<hash_map>
#include<list>
#include <iostream>
using namespace std;
using namespace __gnu_cxx;
typedef struct
{
char strAddrObjName[20];
char strStartIP[16];
char strInfo[128];
} AddObject;
list<AddObject> addrObj;
void setaddrobj()
{
int i = 0;
AddObject temp;
for(i = 0; i <3; i++)
{
printf("Enter name: \n");
scanf("%s",temp.strAddrObjName);
printf("Enter IP: \n");
scanf("%s", temp.strStartIP);
printf("Enter Info: \n");
scanf("%s",temp.strInfo);
addrObj.push_back(temp);
}
}
struct eqstr
{
bool operator()(const char* s1, const char* s2) const {
return (strcmp(s1,s2) == 0);
}
};
int main() {
hash_map<const char*, AddObject , hash <const char *>, eqstr> columns;
setaddrobj();
list<AddObject>::iterator it1;
for(it1 = addrObj.begin(); it1 != addrObj.end(); ++it1)
{
columns[(*it1).strAddrObjName] = *it1;
printf("%s = %s\n",columns[(*it1).strAddrObjName].strAddrObjName, columns[(*it1).strAddrObjName].strStartIP);
}
printf("Columns hash_map size %i\n",columns.size());
hash_map<const char*, AddObject, hash <const char *>, eqstr>::iterator it;
for(it=columns.begin(); it != columns.end(); it++)
{
printf(" %s\n", (*it)[*(it1).strAddrObjName].strStartIP);
}
}
I am getting error:
In function 'int main()':
60: error: 'struct std::_List_iterator<AddObject>' has no member named 'strAddrObjName'
Thanks in advance
Ashanu