IntelliJ имеет поддержку intellisense и рефакторинга из кода в документы jspx.
Вы можете использовать метод вставки карты. Например:
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());
Вы можете сделать это несколькими способами, в зависимости от того, что вы хотите сделать:
Используйте конструктор копирования:
map > map1;
// заполняем map1
карта <строка, список <строка>> карта2 (карта1);
Используйте оператор присваивания, как указано в вопросе:
map > map1;
карта <строка, список <строка>> карта2;
// заполняем map1
карта2 = карта1;
Сделайте все самостоятельно вручную:
map > map1;
карта <строка, список <строка>> карта2;
// заполняем map1
for (карта <строка, список <строка>> :: iterator i = map1.begin ();
я <= map1.end (); ++ i) {
map2 [i.first ()] = i.second ();
}
Похоже, (1) это то, что вы хотите.
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 и итераторов!
Я думаю, вам нужно следующее:
mapb.insert(mapa.begin(), mapa.end());
Я считаю, что это просто пропустит любые ключи, которые уже существуют в цели. Если вы хотите перезаписать значения для повторяющихся ключей, вам придется перебирать элементы, вставлять каждый из них, тестировать пару результатов и заменять значение.
Для случая «трех карт» вам необходимо:
mapc.insert(mapa.begin(), mapa.end());
mapc.insert(mapb.begin(), mapb.end());