Как отладить мой личный модуль, установить точки останова и увидеть консоль?

Стандартный идентификатор стирания ассоциативного контейнера:

for (auto it = m.cbegin(); it != m.cend() /* not hoisted */; /* no increment */)
{
  if (must_delete)
  {
    m.erase(it++);    // or "it = m.erase(it)" since C++11
  }
  else
  {
    ++it;
  }
}

Обратите внимание, что мы действительно хотим, чтобы обычный for цикл здесь, так как мы модифицируем сам контейнер. Цикл, основанный на диапазоне, должен быть строго зарезервирован для ситуаций, когда мы заботимся только об элементах. Синтаксис RBFL делает это ясным, даже не подвергая контейнер внутри тела цикла.

Редактировать. Pre-C ++ 11, вы не могли стереть константы-константы. Там вы должны сказать:

for (std::map<K,V>::iterator it = m.begin(); it != m.end(); ) { /* ... */ }

Стирание элемента из контейнера не противоречит константе элемента. По аналогии, он всегда был совершенно законным delete p, где p является указателем на константу. Константа не ограничивает время жизни; константы в C ++ все еще могут перестать существовать.

-3
задан Francesco Xu 17 January 2019 в 11:05
поделиться

1 ответ

Вы должны быть в состоянии отладить модулей , как Normal .

Либо вы не можете объяснить себя, либо вы смотрите не в том месте.

0
ответ дан flyingBear 17 January 2019 в 11:05
поделиться
Другие вопросы по тегам:

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