Simplicity and efficiency.
It looks simple, but it is not efficient way, copying the whole vector is costly operation (copy to temp and them copy it back). Instead a pointer based approach will be more efficient like this. (Note the changes are marked)
#include <QDebug>
#include <QVector>
int main(int argc, char *argv[])
{
const int inSize = 10;
const int outSize = 10;
QVector<QVector<int> *> vecToSort; //<<<<
// Create Vectors
for(int i = 0; i < outSize; i++)
{
QVector<int> *vect = new QVector<int>(); //<<<<
for(int i = 0; i < inSize; i++)
vect->append(qrand()); //<<<<
vecToSort.append(vect);
}
qDebug() << "Before:";
for(int i = 0; i < vecToSort.size(); i++)
qDebug() << *vecToSort.at(i); //<<<<
// Sort Vectors
for(int i = 0; i < vecToSort.size(); i++)
for(int j = i; j < vecToSort.size(); j++)
if(vecToSort.at(i)->at(0) < vecToSort.at(j)->at(0)) //<<<<
{
QVector<int> *tmp = vecToSort.at(i); //<<<<
vecToSort[i] = vecToSort.at(j);
vecToSort[j] = tmp;
}
qDebug() << "After:";
for(int i = 0; i < vecToSort.size(); i++)
qDebug() << *vecToSort.at(i); //<<<<
return 0;
}
#include <QDebug>
#include <QVector>
int main(int argc, char *argv[])
{
const int inSize = 10;
const int outSize = 10;
QVector<QVector<int> *> vecToSort; //<<<<
// Create Vectors
for(int i = 0; i < outSize; i++)
{
QVector<int> *vect = new QVector<int>(); //<<<<
for(int i = 0; i < inSize; i++)
vect->append(qrand()); //<<<<
vecToSort.append(vect);
}
qDebug() << "Before:";
for(int i = 0; i < vecToSort.size(); i++)
qDebug() << *vecToSort.at(i); //<<<<
// Sort Vectors
for(int i = 0; i < vecToSort.size(); i++)
for(int j = i; j < vecToSort.size(); j++)
if(vecToSort.at(i)->at(0) < vecToSort.at(j)->at(0)) //<<<<
{
QVector<int> *tmp = vecToSort.at(i); //<<<<
vecToSort[i] = vecToSort.at(j);
vecToSort[j] = tmp;
}
qDebug() << "After:";
for(int i = 0; i < vecToSort.size(); i++)
qDebug() << *vecToSort.at(i); //<<<<
return 0;
}
To copy to clipboard, switch view to plain text mode
Bookmarks