Quel est le moyen le plus correct et le plus efficace pour std :: déplacer des éléments d'un vecteur d'un certain type (T1) dans un vecteur d'une paire std :: de même type (T1) et d'un autre type (T2)? En d'autres termes, comment écrire MoveItems()?Déplacer des éléments de std :: vector <T1> vers std :: vector <std :: pair <T1,T2>>
#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;
}
Merci pour votre temps et votre aide, j'apprécie vraiment!
Merci pour votre réponse. Cependant, même avec un appel à 'emplace_back', il fait une copie des chaînes d'origine. Quand je vais imprimer les valeurs de 'DownloadedItems', ils sont toujours là après l'exécution de' MoveItems() ' –
Oui, mais vous ne faites pas de' std :: pair' temporaire, puis vous le copiez. Vous faites la paire sur place. – druckermanly