es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Estoy tratando de enviar un vector 2D por referencia, pero parece que no funciona con un enfoque bastante similar.

    64.minimum-path-sum.cpp: En la función ‘int main()’:
    64.minimum-path-sum.cpp:67:23: error: no se puede enlazar una referencia no constante de tipo ‘std::vector<std::vector<int> >&’ a un valor de tipo ‘std::vector<std::vector<int> >’
       67 |         if(minPathSum(vector<vector<int>> {{1 , 2, 3}}) == 12)cout << "ACC\n";
          |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    64.minimum-path-sum.cpp:57:46: nota:   inicialización del argumento 1 de ‘int minPathSum(std::vector<std::vector<int> >&)’
       57 |         int minPathSum(vector<vector<int>> & grid) {
          |    

                    ~~~~~~~~~~~~~~~~~~~~~~^~~~




#include<bits/stdc++.h>
#include "stringTo2dVector.h"
using namespace std;


int main(){

vector<vector<int>> c{{1 , 2, 3}};
if(minPathSum(c) == 12)cout << "ACC\n"; //No ERROR
else cout << "WA\n";

if(minPathSum(vector<vector<int>> {{1 , 2, 3}}) == 12)cout << "ACC\n"; // ERROR
else cout << "WA\n";
}

¿Cuál es la diferencia entre estos 2 enfoques de pasar un vector 2D como argumento?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El primer enfoque para pasar un vector bidimensional como argumento es creando primero el vector fuera de la función y luego pasándolo por referencia a la función. Este enfoque no produce ningún error.

    El segundo enfoque para pasar un vector bidimensional como argumento es pasarlo directamente como un valor temporal (rvalue) a la función. Este enfoque produce un error porque la función está definida para aceptar una referencia de valor izquierdo no constante, que no puede ser asignada a un valor temporal.

    En resumen, la principal diferencia entre estos dos enfoques es que el primer enfoque pasa el vector como una referencia de valor izquierdo, mientras que el segundo enfoque lo pasa como un valor temporal, lo cual no está permitido para referencias de valor izquierdo no constantes.

Comments are closed.