Stronę tą wyświetlono już: 3268 razy
Klasa QVector jest kolejnym typem kontenera wchodzącego w skład biblioteki Qt. Dysponuje on praktycznie tymi samymi metodami co omawiana klasa QList, jest jednak pewna zasadnicza różnica w tym, jak realizowane jest przechowywanie danych w pamięci. Okazuje się bowiem, że QVector zawsze przechowuje w pamięci elementy tak, że te zajmują kolejne miejsca w pamięci komputera podczas gdy QList przechowuje swoje elementy na stercie, chyba że rozmiar przechowywanych danych jest mniejszy lub równy rozmiarowi typu void*.
Klasa QVector umożliwia szybkie iterowanie po dużej liczbie elementów, ale dodawanie i usuwanie elementów z wnętrza nie jest tak szybkie jak w przypadku klasy QList co ma znaczenie zwłaszcza przy dużej liczbie danych i dużej ilości takich operacji.
Dodawanie elementów do obiektu klasy QVector
Dodanie kolejnych elementów można przeprowadzić na kilka różnych sposobów, jednym z nich jest przypisanie w stylu C++ 11:
Można również dodawać na różne sposoby kolejne elementy:
Wynik działania powyższego kodu:
QVector(10, 20) QVector(10, 20, 30, 40, 50) QVector(60, 10, 20, 30, 40, 50) QVector(60, 10, 20, 30, 40, 50, 70, 80) QVector(60, 10, 20, 30, 40, 50, 70, 80, 90, 100, 110) QVector(130, 60, 10, 20, 30, 40, 50, 70, 80, 90, 100, 110, 120) QVector(130, 60, 130, 10, 20, 30, 40, 50, 70, 80, 90, 100, 110, 120)
Pozyskiwanie informacji o liczbie elementów zawartych
Istnieją dwie metody length i size, które zwracają liczbę elementów zawartych w obiekcie klasy QVector.
Iterowanie po elementach wektora
Iterowanie można wykonać na kilka sposobów. Pierwszy z nich wykorzystuje indeksowanie:
Można też iterować wykorzystując wskaźniki:
Jeżeli dodana została obsługa standardu C++ 11 można sobie ułatwić życie iterując w następujący sposób:
I w końcu można iterować po elementach listy w stylu Javy:
Znalezienie indeksu pierwszego lub ostatniego wystąpienia danej wartości w wektorze
By znaleźć ostatni lub pierwszy indeks, pod którym znajduje się szukana wartość należy skorzystać z metody indexOf lub lastIndexOf w następujący sposób:
Usuwanie elementów z wektora
Istnieje szereg metod, które umożliwiają usuwanie elementów z wektora QVector. Oto przykład ich użycia:
Wynik działania powyższego kodu:
QVector(100, 200, 300, 400, 500, 600, 600, 700, 100, 300, 400, 500, 600, 700, 800) QVector(100, 200, 300, 400, 500, 700, 100, 300, 400, 500, 700, 800) QVector(200, 300, 400, 500, 700, 100, 300, 400, 500, 700, 800) QVector(200, 300, 400, 500, 700, 100, 300, 400, 500, 700) QVector(200, 300, 500, 700, 100, 300, 400, 500, 700) QVector(200, 300, 500, 700, 300, 400, 500, 700) QVector(200, 300, 400, 500, 700) QVector(200, 400, 500, 700)
Zdejmowanie pierwszego, ostatniego lub i-tego elementu wektora
Metody takeFirst. takeLast i takeAt umożliwiają zdjęcie pierwszego, ostatniego i i-tego elementu wektora z jednoczesnym jego zwróceniem.
Wynik działania powyższego kodu:
QVector(100, 200, 300, 400, 500, 600, 600, 700, 100, 300, 400, 500, 600, 700, 800) Get first one: 100 After remove first one: QVector(200, 300, 400, 500, 600, 600, 700, 100, 300, 400, 500, 600, 700, 800) Get last one: 800 After remove last one: QVector(200, 300, 400, 500, 600, 600, 700, 100, 300, 400, 500, 600, 700) Get 3rd one: 400 After remove 3rd one: QVector(200, 300, 500, 600, 600, 700, 100, 300, 400, 500, 600, 700)
Wyciąganie części elementów z wnętrza wektora
Metoda mid umożliwia wyciągnięcie dowolnej liczby elementów z wnętrza wektora. Oto przykład:
Wynik działania powyższego kodu:
QVector(100, 200, 300, 400, 500, 600, 600, 700, 100, 300, 400, 500, 600, 700, 800) QVector(400, 500, 600, 600, 700)
Przenoszenie elementu wektora
Metoda move umożliwia przeniesienie elementu o podanym indeksie na inną pozycję:
Wynik działania powyższego kodu:
QVector(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0) QVector(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1)
Łączenie dwóch wektorów
Łączenie dwóch wektorów umożliwia operator dodawania z podstawianiem += oraz dodawania +. Oto przykład:
Wynik działania powyższego kodu:
QVector(0, 1, 2, 3, 4, 5, 6) QVector(3, 4, 5, 6, 0, 1, 2)
Zamiana elementów wektorów miejscami
Jeżeli zachodzi konieczność zamiany miejscami elementów dwóch wektorów, to najszybszą metodą wykonania tego zadania jest użycie metody swap w następujący sposób:
Wynik działania powyższego kodu:
Before swap: data = QVector(0, 1, 2) data2 = QVector(3, 4, 5, 6) After swap: data = QVector(3, 4, 5, 6) data2 = QVector(0, 1, 2)