Iterate through an empty STL Map

Discussion in 'C++' started by Suneeel, Sep 13, 2006.

  1. Suneeel

    Suneeel Guest

    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();
    }
     
    Suneeel, Sep 13, 2006
    #1
    1. Advertisements

  2. Suneeel

    Zara Guest

    Look at the semicolon at the end of while: it should not be there!
    Best regards,

    Zara
     
    Zara, Sep 13, 2006
    #2
    1. Advertisements

  3. Suneeel

    Kai-Uwe Bux Guest

    you have a bad ";" in the above line.

    Best

    Kai-Uwe Bux
     
    Kai-Uwe Bux, Sep 13, 2006
    #3
  4. Suneeel

    red floyd Guest


    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.
     
    red floyd, Sep 13, 2006
    #4
    1. Advertisements

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 (here). After that, you can post your question and our members will help you out.