У меня есть фрагмент кода, где в vector
элементы являются парами int
и string
. Затем я хочу переместить все элементы из vector
в unordered_map<int, string>
:
#include <algorithm>
#include <iostream>
#include <iterator>
#include <unordered_map>
#include <vector>
using namespace std;
template <typename C>
void print(const C& container) {
for (const auto& ele : container) {
cout << "(" << ele.first << ", " << ele.second << "), ";
}
cout << endl;
}
int main() {
vector<pair<int, string>> v {
{1, "one"},
{2, "two"},
{3, "three"},
{4, "four"},
{5, "five"}
};
unordered_map<int, string> uMap;
move(begin(v), end(v), inserter(uMap, begin(uMap)));
cout << "In unordered_map:" << endl;
print(uMap);
cout << endl << "In vector:" << endl;
print(v);
return 0;
}
Что я не понимаю, так это результаты:
In unordered_map:
(5, five), (4, four), (3, three), (2, two), (1, one),
In vector:
(1, ), (2, ), (3, ), (4, ), (5, ),
Почему эти целые числа остались в vector
? Я думал, что функция move()
переместит все элементы из vector
в unordered_map
, так что в vector
?
ничего не останется