Что является самым правильным и эффективным способом std :: перемещать элементы из вектора определенного типа (T1) в вектор из std :: пары того же типа (T1) и другого типа (T2)?Перемещение элементов из std :: vector <T1> в std :: vector <std :: pair <T1,T2>>
Другими словами, как мне написать MoveItems()?
#include <iostream> // For std::string
#include <string> // For std::string
#include <vector> // For std::vector
#include <utility> // For std::pair
using std::vector;
using std::string;
using std::pair;
vector<string> DownloadedItems;
vector<pair<string,bool>> ActiveItems;
vector<string> Download()
{
vector<string> Items {"These","Words","Are","Usually","Downloaded"};
return Items;
}
void MoveItems()
{
for (size_t i = 0; i < DownloadedItems.size(); ++i)
ActiveItems.push_back(std::pair<string,bool>(DownloadedItems.at(i),true));
}
int main()
{
DownloadedItems = Download();
MoveItems();
return 0;
}
Спасибо за ваше время и помощь, я действительно ценю это!
Благодарим вас за ответ. Однако даже при вызове 'emplace_back' он создает копию исходных строк. Когда я отправляюсь распечатывать значения 'DownloadedItems', они все еще существуют после выполнения' MoveItems() ' –
Да, но вы не создаете временную' std :: pair', а затем копируете ее. Вы делаете пару на месте. – druckermanly