Supongamos que tengo dos iteradores no constantes que comienzan y terminan. Quiero reemplazar completamente el rango entre el comienzo y el final con valores, que están entre otros dos iteradores. Sé que con iteradores no constantes puedo usar la siguiente sintaxis.
*begin = *result.begin();
*end = *result.end();
Pero esto solo cambiará los valores detrás de los iteradores de inicio y fin
Ser más preciso. Tengo un vector inicial
{1, 2, 3, 4, 5, 6, 7}
^ ^
begin end
y algún otro vector llamado resultado, que contiene
{6, 6, 3, 5, 4, 13, 99}
^ ^
begin end
al final quiero que mi matriz inicial se vea así
{6, 3, 5, 4, 5, 6, 7}
Utilizando std::copy()
, se puede hacer así:
#include <iostream>
#include <vector>
#include <algorithm>
void printVector(const std::vector<int>& v) {
bool first = true;
std::cout << '{';
for (int i : v) {
if (!first) std::cout << ", ";
std::cout << i;
first = false;
}
std::cout << "}\n";
}
int main(void) {
std::vector<int> v1 = {1, 2, 3, 4, 5, 6, 7};
std::vector<int> v2 = {6, 6, 3, 5, 4, 13, 99};
printVector(v1);
printVector(v2);
std::vector<int>::iterator dest_begin = v1.begin();
std::vector<int>::iterator src_begin = std::next(v2.begin(), 1);
std::vector<int>::iterator src_end = std::next(v2.begin(), 5);
std::copy(src_begin, src_end, dest_begin);
printVector(v1);
return 0;
}
Salida:
{1, 2, 3, 4, 5, 6, 7}
{6, 6, 3, 5, 4, 13, 99}
{6, 3, 5, 4, 5, 6, 7}
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras