Szukanie w kontenerze QVector. Rejestr plików.

0

Witajcie,

Mam QVector wszystkich plików w danym folderze. Posortowałem go przez qSort ponieważ qBinaryFind oczywiście oczekuje posortowanych danych. Tylko, że ja chciałbym uzyskać konkretny index (byłoby to właśnie Id konkretnego pliku) w tym wektorze, a nie iterator, który pozwala mi przemieszczać się przód/tył. Jak mam to zdziałać?

void FilesRegister::registerFilesInPath(const QString & path)
{
   QDirIterator it(path,  QDir::Readable | QDir::Files | QDir::NoDotAndDotDot | QDir::NoSymLinks,
                   QDirIterator::Subdirectories);

   while(it.hasNext())
   {
      files.push_back(QDir::cleanPath(it.next()));
   }

   qSort(files);
}

uint32_t FilesRegister::getId(const QString & path)
{
   QVector<QString>::iterator it = qBinaryFind(files, path);
   it.
   /* Cóż mam dalej czynić? */
}
1

Mógłbyś użyć std::distance wszak Qt chyba nie implementuje tego jakoś. Ewentualnie it - files.begin();

0

A ja nie rozumiem pytania:

bajos napisał(a):

Tylko, że ja chciałbym uzyskać konkretny iterator w tym wektorze, a nie klasę, która pozwala mi przemieszczać się przód/tył

A twój przykład dostarcza ci iterator: qBinaryFind.

Może od początku, jaki problem ma rozwiązywać twój algorytm? (jak na kogoś zarejestrowanego 3 lata temu strasznie kiepsko opisany problem).

1 użytkowników online, w tym zalogowanych: 0, gości: 1