[C/C++] Asignar una matriz a otra matriz

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 arr1y arr2, y arr1los valores de se asignan uno por uno utilizando la estructura de bucle arr2. Luego, usamos otro bucle para imprimir arr2el valor de .

Ejecutando el código anterior, la salida será:

1 2 3 4 5

Esto indica arr2que recibió con éxito el mismo valor arr1de .

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::copyo 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::copyse 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.arr1arr2arr1arr2

Ejecutando el código anterior, la salida será:

1 2 3 4 5

Esto muestra que arr2recibió con éxito el mismo arr1valor 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.

Supongo que te gusta

Origin blog.csdn.net/XiugongHao/article/details/130734130
Recomendado
Clasificación