C++ tables using arrays

Need help with C, C++, perl, python, etc?

C++ tables using arrays

Postby germain » 2007-04-06 21:01

Hello :)

I wrote in C# a program that uses a lot the object "DataTable" and I would like to port it to C++.
I know a table is simply a bidimensional array, BUT I don't know the size of it at its declaration, so I started to search until I found the "deque" object, it's like an array but I can add and delete elements when I need it.
So, I create an array of deques that represents my table and when I need to access it change it into a bidimensional array.

Now I want to write functions that receive or return bidimensional arrays but I can't, I need to use pointers and I don't know how to access these arrays with pointers.

Any help would be greatly appreciated, here's my "tables" class:

Code: Select all
#include <deque>
using namespace std;

class gtabla
{
   private:
      string tblName; //Nombre de la tabla
      deque<string> tabla[50]; //La tabla tendra un maximo de 50 columnas
      int numCol;
      
   public:
      gtabla(string TblName, string Columnas[], int NumCol); //Constructor: necesita el nombre de la tabla, array y
                                                             //numero de columnas
      void add(string fila[], int NumCol); //Anade una nueva fila a la tabla
      string *get(void); //Devuelve un puntero hacia un array bidimensional de la tabla
      int getNumCols(void); //Devuelve el numero de columnas de la tabla
      long getNumFilas(void); //Devuelve el numero de filas de la tabla
};


//Constructor: necesita el nombre de la tabla, array y numero de columnas
gtabla::gtabla(string TblName, string Columnas[], int NumCol)
{
   tblName = TblName;
   numCol = NumCol;
   
   for (int i = 0; i < NumCol; i++)
   {
      tabla[i].insert(tabla[i].end(), Columnas[i]);
   }
}

//Anade una nueva fila a la tabla
void gtabla::add(string fila[], int NumCol)
{
   if (NumCol != numCol)
      throw "El numero de columnas de la fila dada es erroneo para la tabla";
      
   for (int i = 0; i < NumCol; i++)
      tabla[i].insert(tabla[i].end(), fila[i]);
}

//Devuelve un puntero hacia un array bidimensional de la tabla
string *gtabla::get(void)
{
   //Crear el array de la tabla (filas, cols)
   string nTabla[tabla[0].size()][numCol];
   
   for (unsigned int i = 0; i < tabla[0].size(); i++)
   {
      for (int j = 0; j < numCol; j++)
      {
         nTabla[i][j] = tabla[j].at(i);
      }
   }
   
   return *nTabla;
}

//Devuelve el numero de columnas de la tabla
int gtabla::getNumCols(void)
{
   return numCol;
}

//Devuelve el numero de filas de la tabla
long gtabla::getNumFilas(void)
{
   return tabla[0].size();
}
User avatar
germain
 
Posts: 90
Joined: 2006-09-25 23:10
Location: Mexico. Ajuuuua!!!

Return to Programming

Who is online

Users browsing this forum: No registered users and 4 guests

fashionable