Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Spanish
  4. Determinar el size() de cada fila de una Matriz
Forum Updated to NodeBB v4.3 + New Features

Determinar el size() de cada fila de una Matriz

Scheduled Pinned Locked Moved Solved Spanish
8 Posts 2 Posters 3.5k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • E Offline
    E Offline
    Eduardo12l
    wrote on last edited by Eduardo12l
    #1

    Tengo un QVector de (QVector<QVector<QString>> Temporales) y quiero saber como obtener la cantidad de elementos de cada fila de mi matriz.

    1 Reply Last reply
    0
    • juankiJ Offline
      juankiJ Offline
      juanki
      Moderators
      wrote on last edited by juanki
      #2

      Hola

      Si pones matriz[0].size() o matriz.at(0).size() ¿No te da el tamaño de la primera fila?

      O con un bucle:

      for(auto i = matriz.begin(); i < matriz.end(); i++)
          qDebug() << "tamaño fila " << i->size();
      

      No lo he probado, pero supongo que funciona.

      Un saludo

      Intenta explicar el problema lo más claro y detallado posible. Adjunta los errores y el código que creas da el error.
      Procura escribir correctamente y sin faltas de ortografía.

      Si la duda se solucionó, por favor, marca el tema como 'solucionado'.

      E 1 Reply Last reply
      1
      • juankiJ juanki

        Hola

        Si pones matriz[0].size() o matriz.at(0).size() ¿No te da el tamaño de la primera fila?

        O con un bucle:

        for(auto i = matriz.begin(); i < matriz.end(); i++)
            qDebug() << "tamaño fila " << i->size();
        

        No lo he probado, pero supongo que funciona.

        Un saludo

        E Offline
        E Offline
        Eduardo12l
        wrote on last edited by
        #3

        @juanki Como puedo llenar la matriz, cada vez que la trato de llenar el programa se detiene.

        1 Reply Last reply
        0
        • juankiJ Offline
          juankiJ Offline
          juanki
          Moderators
          wrote on last edited by
          #4

          Hola

          Cuando tienes un error, acostúmbrate a poner el trozo de código que crees da el error y el error que obtienes, así será más fácil identificar el problema.

          Te recomiendo que le des un vistazo a la documentación de QVector, ya que tiene diferentes formas de añadir datos a un vector. Por ejemplo:

          QVector<QString> v1;
          v1.append("Hola");
          v1.append("mundo");;
          
          QVector<QString> v2;
          v2 << "soy" << "un" << "vector";
          

          También se puede añadir en una posición específica:

          v2.insert(0, "NO");
          

          En tu caso quieres usar un "vector de vectores", podría hacerse así:

          QVector<QVector<QString>> matriz;
          matriz << v1 << v2;
          

          Y para añadir un elemento, por ejemplo al primer vector:

          matriz[0].append(":)");
          

          Un saludo

          Intenta explicar el problema lo más claro y detallado posible. Adjunta los errores y el código que creas da el error.
          Procura escribir correctamente y sin faltas de ortografía.

          Si la duda se solucionó, por favor, marca el tema como 'solucionado'.

          E 1 Reply Last reply
          1
          • juankiJ juanki

            Hola

            Cuando tienes un error, acostúmbrate a poner el trozo de código que crees da el error y el error que obtienes, así será más fácil identificar el problema.

            Te recomiendo que le des un vistazo a la documentación de QVector, ya que tiene diferentes formas de añadir datos a un vector. Por ejemplo:

            QVector<QString> v1;
            v1.append("Hola");
            v1.append("mundo");;
            
            QVector<QString> v2;
            v2 << "soy" << "un" << "vector";
            

            También se puede añadir en una posición específica:

            v2.insert(0, "NO");
            

            En tu caso quieres usar un "vector de vectores", podría hacerse así:

            QVector<QVector<QString>> matriz;
            matriz << v1 << v2;
            

            Y para añadir un elemento, por ejemplo al primer vector:

            matriz[0].append(":)");
            

            Un saludo

            E Offline
            E Offline
            Eduardo12l
            wrote on last edited by Eduardo12l
            #5

            @juanki Hola que tal, gracias por la recomendacion.

            Estoy tratando de llenar la matriz de 2-Dimensiones "Temporales" usando un loop (especificamente estoy usando un for) . Se supone que DefNombre concatenado con DefGrupo deben ser ingresados dentro de cada lista de mi matriz , sin embargo, en la segunda linea de este "for" aparece un error, el cual es:
            error: C2663: 'QList<QString>::append': 2 sobrecargas no tienen ninguna conversi¢n v lida para el puntero 'this'

                for(int c = 0; c < DefNombre.size(); c++){
                QString aux=DefNombre[c]+DefGrupo[c];//Ejemplo:aux=DefNombre[0]+DefGrupo[0]="José-G1"
                 Temporales.at(c).append(aux);  //Ejemplo: Temporales[0][0] = "José-G1"(/ERROR)
                 qDebug()<<Temporales[c];
                }
            

            PD: Si no uso at() sino operador [], el build ya no me cita error, pero el programa corre pero hace crash. Y el problema esta ahi porque si elimino todo ese codigo todo corre bien, pero esa matriz es imprescindible

            1 Reply Last reply
            0
            • juankiJ Offline
              juankiJ Offline
              juanki
              Moderators
              wrote on last edited by
              #6

              Hola

              Ahí lo que veo es que usas el tamaño de DefNombre para controlar el bucle. ¿Temporales tiene las mismas filas que DefNombre? El método at tiene que recibir un índice válido y si DefNombre y Temporales no tiene las mismas filas, ya tienes un error ahí.

              Un saludo

              Intenta explicar el problema lo más claro y detallado posible. Adjunta los errores y el código que creas da el error.
              Procura escribir correctamente y sin faltas de ortografía.

              Si la duda se solucionó, por favor, marca el tema como 'solucionado'.

              E 1 Reply Last reply
              1
              • juankiJ juanki

                Hola

                Ahí lo que veo es que usas el tamaño de DefNombre para controlar el bucle. ¿Temporales tiene las mismas filas que DefNombre? El método at tiene que recibir un índice válido y si DefNombre y Temporales no tiene las mismas filas, ya tienes un error ahí.

                Un saludo

                E Offline
                E Offline
                Eduardo12l
                wrote on last edited by Eduardo12l
                #7

                @juanki Ah bueno si pero el error pasa con o sin bucle. Deberia funcionar ese ultimo ejemplo que tu pones, pero en mi caso no.

                matriz[0].append(":)");
                
                1 Reply Last reply
                0
                • juankiJ Offline
                  juankiJ Offline
                  juanki
                  Moderators
                  wrote on last edited by
                  #8

                  Hola

                  El operador [] también requiere de un índice válido, si tu vector de vectores o matriz está vacío, dará error:

                  QVector<QVector<QString>> matriz;
                  matriz[0].append("feliz"); // esto debe dar error
                  

                  En cambio, si ya tiene contenido. sí que funcionará:

                  QVector<QVector<QString>> matriz;
                  
                  QVector<QString> f1;
                  f1 << "Hola" << "Mundo";
                  
                  matriz << f1; // añadimos una fila a la matriz
                  matriz[0].append("feliz"); // esto funcionará, ya tiene una fila
                  
                  matriz[1].append("error"); // en cambio, esto fallará, solo tenemos una fila
                  

                  Seguro que tendrás que replantearte la forma de llenar le matriz. O, si es de tamaño fijo, usar un array de toda la vida.

                  Un saludo

                  Intenta explicar el problema lo más claro y detallado posible. Adjunta los errores y el código que creas da el error.
                  Procura escribir correctamente y sin faltas de ortografía.

                  Si la duda se solucionó, por favor, marca el tema como 'solucionado'.

                  1 Reply Last reply
                  1

                  • Login

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Categories
                  • Recent
                  • Tags
                  • Popular
                  • Users
                  • Groups
                  • Search
                  • Get Qt Extensions
                  • Unsolved