Копировать карту со второго элемента и далее на другую карту - PullRequest
0 голосов
/ 12 марта 2019

У меня есть карта: map<int , std::string> results, и я хочу скопировать часть этой карты во вторую карту results2.

Например, у меня есть:

results[0] = "A",
results[1] = "B",
results[2] = "C",
results[3] = "D"

И results2 будет, например, results2("B", "C", "D"). Так что это то же самое с индексом 1 на

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

Вы можете сделать это легко с insert и std::next. std::map не имеет итераторов с произвольным доступом, только двунаправленные итераторы, поэтому операции + n нет. Так что std::next требуется.

#include<iostream>
#include<map>
#include<algorithm>

int main()
{
    std::map<int, std::string> results, results2;
    results = {{1, "A"}, {2, "B"}, {3, "C"}, {4, "D"}};
    results2.insert(std::next(results.begin()), results.end()); //from second element onwards

    for(auto const& m: results)
      std::cout << m.first << ' ' << m.second << ' ';

    std::cout << '\n';

    for(auto const& m: results2)
      std::cout << m.first << ' ' << m.second << ' ';

}

См. Демонстрацию

0 голосов
/ 12 марта 2019

Я хочу скопировать часть этой карты на вторую карту

Это просто использовать итераторы и построить «вторую карту»

std::map<int, std::string> result2(results.find("B"), results.end());

Скопирует что-нибудь из "B" и включая его в конец.

...