С++ для начинающих


Навигация по элементам отображения


После того как мы построили отображение, хотелось бы распечатать его содержимое. Мы можем сделать это, используя итератор, начальное и конечное значение которого получают с помощью функций-членов begin() и end(). Вот текст функции display_map_text():

void

display_map_text( map<string,loc*> *text_map )

{

    typedef map<string,loc*> tmap;

    tmap::iterator iter = text_map->begin(),

    iter_end = text_map->end();

    while ( iter != iter_end )

    {

        cout << "word: " << (*iter).first << " (";

        int loc_cnt = 0;

        loc *text_locs = (*iter).second;

        loc::iterator liter = text_locs->begin(),



                      liter_end = text_locs->end();

        while (liter != liter_end ) {

            if ( loc_cnt )

                cout << ',';

            else ++loc_cnt;

            cout << '(' << (*liter).first

                 << ',' << (*liter).second << ')';

            ++liter;

        }

        cout << ")\n";

        ++iter;

    }

    cout << endl;

}

Если наше отображение не содержит элементов, данная функция не нужна. Проверить, пусто ли оно, можно с помощью функции-члена size():

if ( text_map->size() )

    display_map_text( text_map );

Но более простым способом, без подсчета элементов, будет вызов функции-члена empty():

if ( ! text_map->empty() )

    display_map_text( text_map );



Содержание раздела