Seite 1 von 1

Multidimensionaler dynamischer Array

Verfasst: 8. April 2012 20:38
von paule22
Hallo,

ich schreibe gerade an einer script sprache.
darunter ist auch folgendes construct:

myArray = new Array(4,2,3)
myArray[1][2][3] = 42

nun bin ich am überlegen, wie man mit QT an die einzelnen Dimensionen ran kommt.
dazu ein kleiner code:

Code: Alles auswählen

QList<int> dim;
QListIterator<int> iter(dim);
while (iter.hasNext())
{
  cout << iter.next() << " | ";
}
der funktioniert auch soweit.
nur wie kann ich wie setvalue(1,2,3, 42);
bewerkstelligen?

also soll dynamisch sein, damit man N dimensionen programmieren kann.
ich habe folgenden code, komme aber nicht weiter:

Code: Alles auswählen

QList<TArrayType> es;

extern "C" void set_array_value(char *n, double val, int num, ...)
{
  es << TArrayType(QString(n),1,val,"Hello");

  bool found = false;
  int i,j,k;

  for (i = 0; i < es.count(); i++)
  {
    if (es.at(j).name == ArrayList.at(i).name)
    {
	va_list ptr;
	int s, m, d;
	QList<int> dim;

	va_start(ptr,num);
	for (m = num; m >= 1; m--)
	{
	  k = va_arg(ptr,int);
	  s = va_arg(ptr,int);
	  dim << k;
	}
	va_end(ptr);

	if (dim.count() < ArrayList.at(i).dimension.count())
	throw ArrayException;

	QListIterator<int> iter(dim);
	while (iter.hasNext())
	{
	  cout << iter.next() << " | ";
	}

        cout
	<< "Name: " << ArrayList.at(i).name.toStdString() << endl
	<< "Size: " << num            << endl
	<< "Type: " << es.at(j).type  << endl
	<< "Valu: " << es.at(j).value << endl
	<< "Text: " << es.at(j).text.toStdString()
	<< endl;

	found = true;
	break;
    }
  }
}
danke für hilfe

Re: Multidimensionaler dynamischer Array

Verfasst: 9. April 2012 13:48
von Christian81
Ein Array ist ein Vector, keine List!
Also QVector<QVector<QVector<int> > >