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

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

    typedef struct
    char *data;
    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;
    Suneeel, Sep 13, 2006
    1. Advertisements

  2. Suneeel

    Zara Guest

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

    Zara, Sep 13, 2006
    1. Advertisements

  3. Suneeel

    Kai-Uwe Bux Guest

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


    Kai-Uwe Bux
    Kai-Uwe Bux, Sep 13, 2006
  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
    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.