Разделение данных QbyteArray

Это простая проблема, не знаю, почему у людей такое сложное решение. Простая функция сортировки (на основе алгоритма быстрой сортировки):

function sortObjectsArray(objectsArray, sortKey)
        {
            // Quick Sort:
            var retVal;

            if (1 < objectsArray.length)
            {
                var pivotIndex = Math.floor((objectsArray.length - 1) / 2);  // middle index
                var pivotItem = objectsArray[pivotIndex];                    // value in the middle index
                var less = [], more = [];

                objectsArray.splice(pivotIndex, 1);                          // remove the item in the pivot position
                objectsArray.forEach(function(value, index, array)
                {
                    value[sortKey] <= pivotItem[sortKey] ?                   // compare the 'sortKey' proiperty
                        less.push(value) :
                        more.push(value) ;
                });

                retVal = sortObjectsArray(less, sortKey).concat([pivotItem], sortObjectsArray(more, sortKey));
            }
            else
            {
                retVal = objectsArray;
            }

            return retVal;
        }

Пример использования:

var myArr = 
        [
            { val: 'x', idx: 3 },
            { val: 'y', idx: 2 },
            { val: 'z', idx: 5 },
        ];
myArr = sortObjectsArray(myArr, 'idx');
-1
задан Cenk 16 January 2019 в 06:24
поделиться

1 ответ

Как мне сделать это в qt (используя QList myarray)

Повторное использование ваших имен ( myarray для QList не очень интуитивно понятно) [114 ]

#include <QList>
#include <QByteArray>
#include <iostream>

void split(const QByteArray & a, 
           QList<QByteArray> & l,
           int n)
{  
  for (int i = 0; i < a.size(); i += n)
    l.push_back(a.mid(i, n));
}

int main()
{
  QByteArray array("azertyuiop");
  QList<QByteArray> myarray;

  split(array, myarray, 3);

  for (QList<QByteArray>::const_iterator itl = myarray.constBegin();
       itl != myarray.constEnd();
       ++itl) {
    const QByteArray & a = *itl;

    for (QByteArray::const_iterator ita = a.constBegin();
       ita != a.constEnd();
       ++ita) {
      std::cout << *ita << ' ';
    }
    std::cout << std::endl;
  }

  return 0;
}

Результат выполнения:

a z e 
r t y 
u i o 
p 
0
ответ дан bruno 16 January 2019 в 06:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: