Asignación transversal de bucle: use una estructura de bucle (como un bucle for) para asignar y copiar elementos uno por uno. Aquí está el código de ejemplo:
#include <iostream>
const int SIZE = 5; // 数组的大小
int main() {
int arr1[SIZE] = {
1, 2, 3, 4, 5}; // 原始数组
int arr2[SIZE]; // 目标数组
// 将arr1的值赋给arr2
for (int i = 0; i < SIZE; ++i) {
arr2[i] = arr1[i];
}
// 打印arr2的值
for (int i = 0; i < SIZE; ++i) {
std::cout << arr2[i] << " ";
}
std::cout << std::endl;
return 0;
}
En el código anterior, se definen dos matrices arr1
y arr2
, y arr1
los valores de se asignan uno por uno utilizando la estructura de bucle arr2
. Luego, usamos otro bucle para imprimir arr2
el valor de .
Ejecutando el código anterior, la salida será:
1 2 3 4 5
Esto indica arr2
que recibió con éxito el mismo valor arr1
de .
Use las funciones std::copy o std::memcpy de la biblioteca estándar
En C++, =
la dirección de un arreglo se puede asignar a otro arreglo usando directamente el operador de asignación. Sin embargo, el contenido de la matriz no se copia. Esto hará que ambas matrices compartan el mismo espacio de memoria, y las modificaciones a una matriz también afectarán a la otra.
Si desea realizar la asignación general de los contenidos de la matriz, puede usar la función en la biblioteca estándar std::copy
o std::memcpy
, en este momento, hay dos matrices (es decir, las direcciones son diferentes). Aquí está el código de ejemplo:
#include <iostream>
#include <algorithm>
#include <cstring>
const int SIZE = 5; // 数组的大小
int main() {
int arr1[SIZE] = {
1, 2, 3, 4, 5}; // 原始数组
int arr2[SIZE]; // 目标数组
// 使用 std::copy 进行整体赋值
std::copy(arr1, arr1 + SIZE, arr2);
// 打印arr2的值
for (int i = 0; i < SIZE; ++i) {
std::cout << arr2[i] << " ";
}
std::cout << std::endl;
return 0;
}
En el código anterior, los contenidos de std::copy
se copian en el uso de la función . De esta manera, tendrá espacios de memoria independientes y las modificaciones a una matriz no afectarán a la otra.arr1
arr2
arr1
arr2
Ejecutando el código anterior, la salida será:
1 2 3 4 5
Esto muestra que arr2
recibió con éxito el mismo arr1
valor y que las dos matrices son independientes.
Use contenedores de biblioteca estándar: si usa contenedores de biblioteca estándar (como std::vector, std::array, etc.) en C++, puede usar directamente el operador de asignación o el constructor de copia del contenedor para copiar entre matrices.
#include <vector>
std::vector<int> source = {
1, 2, 3, 4, 5};
std::vector<int> destination = source;
Este enfoque funciona bien cuando se utilizan contenedores de biblioteca estándar, que proporcionan operaciones de copia convenientes.
Independientemente del método que elija, asegúrese de que el tamaño de la matriz de destino sea lo suficientemente grande como para contener los elementos de la matriz de origen y tenga cuidado de evitar los accesos fuera de los límites de la matriz.