Как добавить содержание одной карты к другой карте?

IntelliJ имеет поддержку intellisense и рефакторинга из кода в документы jspx.

19
задан Nick Lewis 14 July 2009 в 21:17
поделиться

4 ответа

Вы можете использовать метод вставки карты. Например:

   std::map<int, int> map1;
    std::map<int, int> map2;

    map1[1] = 1;

    map2.insert(map1.begin(), map1.end());
    map1.clear();

    map1[2] =2;
    map2.insert(map1.begin(), map1.end());
7
ответ дан 30 November 2019 в 02:12
поделиться

Вы можете сделать это несколькими способами, в зависимости от того, что вы хотите сделать:

  1. Используйте конструктор копирования:

     map > map1;
    // заполняем map1
    
    карта <строка, список <строка>> карта2 (карта1);
    
  2. Используйте оператор присваивания, как указано в вопросе:

     map > map1;
    карта <строка, список <строка>> карта2;
    
    // заполняем map1
    
    карта2 = карта1;
    
  3. Сделайте все самостоятельно вручную:

     map > map1;
    карта <строка, список <строка>> карта2;
    
    // заполняем map1
    
    for (карта <строка, список <строка>> :: iterator i = map1.begin ();
    я <= map1.end (); ++ i) {
     map2 [i.first ()] = i.second ();
    }
    

Похоже, (1) это то, что вы хотите.

3
ответ дан 30 November 2019 в 02:12
поделиться
map<int,int> map1;
map<int,int> map2;
map1.insert(map2.begin(), map2.end());

Это вставит в map1 элементы от начала до конца map2 . Этот метод является стандартным для всех структур данных STL, так что вы даже можете сделать что-то вроде

map<int,int> map1;
vector<pair<int,int>> vector1;
vector1.insert(map1.begin(), map1.end());

Кроме того, указатели также могут функционировать как итераторы!

char str1[] = "Hello world";
string str2;
str2.insert(str1, str1+strlen(str1));

Настоятельно рекомендую изучить магию STL и итераторов!

51
ответ дан 30 November 2019 в 02:12
поделиться

Я думаю, вам нужно следующее:

mapb.insert(mapa.begin(), mapa.end());

Я считаю, что это просто пропустит любые ключи, которые уже существуют в цели. Если вы хотите перезаписать значения для повторяющихся ключей, вам придется перебирать элементы, вставлять каждый из них, тестировать пару результатов и заменять значение.

Для случая «трех карт» вам необходимо:

mapc.insert(mapa.begin(), mapa.end());
mapc.insert(mapb.begin(), mapb.end());
1
ответ дан 30 November 2019 в 02:12
поделиться
Другие вопросы по тегам:

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