Как я могу отобразить содержание карты на консоли?

Слово «зло» - это злоупотребление и злоупотребление словом на Stackoverflow и симуляционных форумах.

Люди, которые используют это, имеют слишком мало воображения.

32
задан honk 21 March 2019 в 09:27
поделиться

3 ответа

Ну, это зависит от того, как вы хотите их отображать, но вы всегда можете легко итерировать их:

typedef map<string, list<string>>::const_iterator MapIterator;
for (MapIterator iter = mapex.begin(); iter != mapex.end(); iter++)
{
    cout << "Key: " << iter->first << endl << "Values:" << endl;
    typedef list<string>::const_iterator ListIterator;
    for (ListIterator list_iter = iter->second.begin(); list_iter != iter->second.end(); list_iter++)
        cout << " " << *list_iter << endl;
}
24
ответ дан 27 November 2019 в 20:09
поделиться

Я бы попробовал следующее

void dump_list(const std::list<string>& l) {
  for ( std::list<string>::const_iterator it = l.begin(); l != l.end(); l++ ) {
    cout << *l << endl;
  }
}

void dump_map(const std::map<string, std::list<string>>& map) {
  for ( std::map<string,std::list<string>>::const_iterator it = map.begin(); it != map.end(); it++) {
    cout << "Key: " << it->first << endl;
    cout << "Values" << endl;
    dump_list(it->second);
}
12
ответ дан 27 November 2019 в 20:09
поделиться

Я здесь немного не по теме ...

Я думаю, вы хотите сбросить содержимое карты для отладки. Хочу напомнить, что следующий выпуск gdb (версия 7. 0) будет иметь встроенный интерпретатор python, который будет использоваться gcc libstdc ++ для предоставления stl pretty-принтеров. Вот пример для вашего случая

  #include <map>
  #include <map>
  #include <list>
  #include <string>

  using namespace std;

  int main()
  {
    typedef map<string, list<string> > map_type;
    map_type mymap;

    list<string> mylist;
    mylist.push_back("item 1");
    mylist.push_back("item 2");
    mymap["foo"] =  mylist;
    mymap["bar"] =  mylist;

    return 0; // stopped here
  }

, который приводит к

(gdb) print mymap
$1 = std::map with 2 elements = {
  ["bar"] = std::list = {
    [0] = "item 1",
    [1] = "item 2"
  },
  ["foo"] = std::list = {
    [0] = "item 1",
    [1] = "item 2"
  }
}

Ура!

5
ответ дан 27 November 2019 в 20:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: