Iterate through an empty STL Map

S

Suneeel

Hi All,

I'm having trouble with iterating through an STL map.
Firstly, for an empty map, will map.begin() be equal to map.end()?
If this is true, the program should not be entering the while loop to
delete the map's contents...
But, it does, thus causing a segmentation fault when I try to delete..

Is this hapening because the map is empty?

I'm running CentOS, using g++ (GCC) 3.4.5 20051201 on linux kernel
2.6.9-34.EL

This is the code:
#include <stdio.h>
#include <map>
using namespace std;

typedef struct
{
char *data;
}data_type;
typedef map<int ,data_type*> map_type;

int main()
{
map_type my_map;
map_type::iterator it = my_map.begin();
data_type *data_item;
while(it != my_map.end());
{
data_item = it->second;
delete data_item->data;
delete data_item;
printf("\nPass");
it++;
}
my_map.clear();
}
 
Z

Zara

Hi All,

I'm having trouble with iterating through an STL map.
Firstly, for an empty map, will map.begin() be equal to map.end()?
If this is true, the program should not be entering the while loop to
delete the map's contents...
But, it does, thus causing a segmentation fault when I try to delete..

Is this hapening because the map is empty?
int main()
{
map_type my_map;
map_type::iterator it = my_map.begin();
data_type *data_item;
while(it != my_map.end());

Look at the semicolon at the end of while: it should not be there!
{
data_item = it->second;
delete data_item->data;
delete data_item;
printf("\nPass");
it++;
}
my_map.clear();
}

Best regards,

Zara
 
K

Kai-Uwe Bux

#include <stdio.h>
#include <map>
using namespace std;

typedef struct
{
char *data;
}data_type;
typedef map<int ,data_type*>  map_type;

int main()
{
map_type my_map;
map_type::iterator it = my_map.begin();
data_type *data_item;
while(it != my_map.end());

you have a bad ";" in the above line.
{
data_item = it->second;
delete data_item->data;
delete data_item;
printf("\nPass");
it++;
}
my_map.clear();
}


Best

Kai-Uwe Bux
 
R

red floyd

Kai-Uwe Bux said:
you have a bad ";" in the above line.


BTW, don't sweat that error. I did the exact same thing in the first
program I wrote as a professional.... I still tell that story.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,756
Messages
2,569,533
Members
45,007
Latest member
OrderFitnessKetoCapsules

Latest Threads

Top