карта С ++, очищенная внутри карты

0

У меня есть следующие typedefs

typedef map<string, IPAddressPolicyRulesInfo> SecondMap;

typedef map<string, SecondMap>   FirstMap;

FirstMap            CPCRF::m_mIMSI2PCRFInfo;

В функции c++:

внутри функции я хочу очистить вторую карту. Каков наилучший способ сделать это? Любые комментарии или предложения приветствуются.

спасибо pdk

  • 2
    То, что у вас сейчас, гораздо понятнее, спасибо за редактирование. Что касается вашего фактического вопроса, вы, очевидно, уже имеете в виду подход, но то, как вы задали этот вопрос, недопустимо. По крайней мере, у вас есть несоответствующие скобки. Но мне не совсем ясно, какой у вас подход, в частности: это что-то вроде середины двух разумных подходов, которые я могу придумать, и я не могу сказать, на какой из них вы смотрите.
  • 1
    Для публикации здесь я бы предложил использовать более короткие / более легкие для чтения имена переменных / типов. Для меня APN2PolicyRules выглядит как jargen. Возможно, что-то вроде map1_t или InnerMapType .
Показать ещё 3 комментария
Теги:
stl

1 ответ

0
Лучший ответ

Надеюсь, это поможет вам начать работу в правильном направлении:

#include <map>
#include <iostream>

// In general you shouldn't use _t after your own types (some people don't like it)
// But for a post here it doesn't matter too much.

typedef std::map<int, double> map1_t;
typedef std::map<int, map1_t> map2_t;

typedef map2_t::iterator it_t;

int main(int argc, char** argv)
{
  // Create the map
  map2_t m;

  // Add some entries
  { map1_t h; h[0] = 1.1; h[1] = 2.2; m[5] = h; }
  { map1_t h; h[0] = 5.2; h[8] = 7.2; m[1] = h; }

  // Output some information
  std::cout << m.size() << std::endl;
  std::cout << m[5].size() << std::endl;

  // For each element in the outer map m
  for (it_t it = m.begin(); it != m.end(); ++it)
  {
    // Assign a friendly name to the inner map
    map1_t& inner = it->second;

    // Clear the inner map
    inner.clear();
  }

  // Output some information (to show we have done something)
  std::cout << m.size() << std::endl;
  std::cout << m[5].size() << std::endl;

  return 0;
}
  • 0
    Спасибо. Кстати, я пытался найти определенный элемент в первой карте, очистить вторую карту, для которой переданы ключевые карты. Давайте скажем для первого ключа и второго ключа

Ещё вопросы

Сообщество Overcoder
Наверх
Меню