| Topic: |
DEVELOP > c-Plus-Plus |
| User: |
"" |
| Date: |
13 Sep 2006 03:20:38 AM |
| Object: |
Iterate through an empty STL Map |
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();
}
.
|
|
| User: "Kai-Uwe Bux" |
|
| Title: Re: Iterate through an empty STL Map |
13 Sep 2006 03:52:43 AM |
|
|
wrote:
#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
.
|
|
|
| User: "red floyd" |
|
| Title: Re: Iterate through an empty STL Map |
13 Sep 2006 08:31:01 AM |
|
|
Kai-Uwe Bux wrote:
Suneeel@gmail.com wrote:
#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();
}
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.
.
|
|
|
|
|
| User: "Zara" |
|
| Title: Re: Iterate through an empty STL Map |
13 Sep 2006 03:48:43 AM |
|
|
On 13 Sep 2006 01:20:38 -0700, wrote:
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
.
|
|
|
|

|
Related Articles |
|
|