Wie man ein Array in C++ kopiert
-
Verwendung von die Funktion
copy()
zum Kopieren eines Arrays in C++ -
Verwenden Sie die Funktion
copy_backward()
, um ein Array zu kopieren -
Verwendung von die Methode
assign()
zum Kopieren eines Arrays
Dieser Artikel führt ein, wie man ein Array in C++ kopiert.
Verwendung von die Funktion copy()
zum Kopieren eines Arrays in C++
Die copy()
Methode ist der empfohlene Weg, bereichsbasierte Strukturen mit einem einzigen Funktionsaufruf zu kopieren. copy()
nimmt das erste und das letzte Element des Bereichs und den Anfang des Zielarrays. Beachten Sie, dass Sie ein undefiniertes Verhalten erhalten könnten, wenn der dritte Parameter innerhalb des Quellbereichs liegt.
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
using std::copy;
using std::cout;
using std::endl;
using std::string;
using std::vector;
int main() {
vector<string> str_vec = {"Warty", "Hoary", "Breezy",
"Dapper", "Edgy", "Feisty"};
vector<string> new_vec(str_vec.size());
copy(str_vec.begin(), str_vec.end(), new_vec.begin());
cout << "new_vec - | ";
copy(new_vec.begin(), new_vec.end(),
std::ostream_iterator<string>(cout, " | "));
cout << endl;
return EXIT_SUCCESS;
}
Ausgabe:
new_vec - | Warty | Hoary | Breezy | Dapper | Edgy | Feisty |
Verwenden Sie die Funktion copy_backward()
, um ein Array zu kopieren
Die Methode copy_backward()
kann ein Array in umgekehrter Reihenfolge mit dem ursprünglichen Element kopieren, aber die Reihenfolge bleibt erhalten. Beim Kopieren der sich überlappenden Bereiche gibt es eine Faustregel, die man bei der Verwendung der Methoden std::copy
und std::copy_backward
beachten sollte: copy
ist geeignet, wenn man nach links kopiert (der Anfang des Zielbereichs liegt außerhalb des Quellbereichs). Im Gegensatz dazu ist copy_backward
angemessen, wenn nach rechts kopiert wird (das Ende des Zielbereichs liegt außerhalb des Quellbereichs).
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
using std::copy_backward;
using std::cout;
using std::endl;
using std::string;
using std::vector;
int main() {
vector<string> str_vec = {"Warty", "Hoary", "Breezy",
"Dapper", "Edgy", "Feisty"};
vector<string> new_vec(str_vec.size());
copy_backward(str_vec.begin(), str_vec.end(), new_vec.end());
cout << "new_vec - | ";
copy(new_vec.begin(), new_vec.end(),
std::ostream_iterator<string>(cout, " | "));
cout << endl;
return EXIT_SUCCESS;
}
Verwendung von die Methode assign()
zum Kopieren eines Arrays
assign()
ist eine eingebaute Methode eines vector
-Containers, die den Inhalt des aufrufenden vector
-Objekts durch übergebene Elemente des Bereichs ersetzt. Die Methode assign()
könnte nützlich sein, wenn man die Vektoren der Typen kopiert, die leicht ineinander konvertiert werden können. Im folgenden Code-Beispiel demonstrieren wir eine Möglichkeit, einen char
-Vektor mit einem einzigen assign
-Aufruf in den int
-Vektor zu kopieren.
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<char> char_vec{'a', 'b', 'c', 'd', 'e'};
vector<int> new_vec(char_vec.size());
new_vec.assign(char_vec.begin(), char_vec.end());
cout << "new_vec - | ";
copy(new_vec.begin(), new_vec.end(), std::ostream_iterator<int>(cout, " | "));
cout << endl;
return EXIT_SUCCESS;
}
Ausgabe:
new_vec - | 97 | 98 | 99 | 100 | 101 |
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook