Was ist der korrekteste und effizienteste Weg, um std :: Elemente aus einem Vektor eines bestimmten Typs (T1) in einen Vektor zu verschieben eines std :: Paares desselben Typs (T1) und eines anderen Typs (T2)?Elemente von std :: vector <T1> nach std :: vector <std :: pair verschieben <T1,T2>>
Mit anderen Worten, wie sollte ich MoveItems() schreiben?
#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;
}
Vielen Dank für Ihre Zeit und Hilfe, ich schätze es wirklich!
Vielen Dank für Ihre Antwort. Aber selbst mit einem Aufruf von 'emplace_back' wird eine Kopie der ursprünglichen Zeichenfolgen erstellt. Wenn ich die 'DownloadedItems'-Werte ausdrucke, sind sie nach der Ausführung von 'MoveItems()' immer noch da. –
Ja, aber du machst kein temporäres 'std :: pair' und kopierst es dann zurück. Du machst das Paar an Ort und Stelle. – druckermanly