• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

QMap jak dostać klucz i wartość

0 głosów
927 wizyt
pytanie zadane 11 czerwca 2016 w C i C++ przez niezalogowany
Witam, próbuję przerobić mój program z vectora na mapę i gdybym pisał to w C::B to mógłbym użyć itr->first jednak w Qt tego nie da się zrobić i szukam rozwiązania, ale nie znalazłem. Znaczy... coś znalazłem ale to wymagało QList(dalej nie pamiętam) albo używania jakiegoś innego zapisu pętli for. Jak mogę w QMap za pomocą iteratora dostać się do klucza albo wartości??
komentarz 11 czerwca 2016 przez Macek Kolo Mądrala (5,480 p.)

Mógłbyś wrzucić kawałek kodu z tym itr->first bo ciekawi mnie to. Tzn. wydawało mi się, że wszystkie kontenery mają ujednolicony dostęp do zasobów więc i vector i map. A QMap to to samo co map tylko w Qt, środowisko nie ma tu nic do gadania :) 

komentarz 11 czerwca 2016 przez niezalogowany
jak dla mnie Qt jest trochę wyolbrzymione. Lepiej zrobili funkcje w bibliotece standardowej. Oto przykład na map:

Qt:
for(QMap<QString,QString>::iterator itr = map.begin(); itr != map.end(); ++itr)
    //tutaj cos robisz pokazuje jak dostac te wartosci
    itr.key() itr.value();

std:
for(map<string,string>::iterator map.begin(); map.end(); ++itr)
    //tutaj cos robisz pokazuje jak dostac te wartosci
    itr->first itr->second

2 odpowiedzi

0 głosów
odpowiedź 11 czerwca 2016 przez mariush Dyskutant (7,860 p.)
wybrane 11 czerwca 2016
 
Najlepsza

To słabo szukałeś.

QMap<Typ, Typ>::iterator itr;
//...
itr.key(); // klucz
itr.value(); // wartość

 

komentarz 11 czerwca 2016 przez niezalogowany
nie szukam w Qt 4.8 ale dzięki już wiem żeby tam też szukać.
0 głosów
odpowiedź 11 czerwca 2016 przez Bondrusiek Maniak (61,440 p.)

Witam,

Pierwsza strona jak wpiszesz QMap w Google powie Ci to.

QMapIterator<QString, int> i(map);
while (i.hasNext()) {
    i.next();
    cout << i.key() << ": " << i.value() << endl;
}

lub

QMap<QString, int>::const_iterator i = map.constBegin();
while (i != map.constEnd()) {
    cout << i.key() << ": " << i.value() << endl;
    ++i;
}

Podobne pytania

0 głosów
0 odpowiedzi 368 wizyt
pytanie zadane 18 sierpnia 2017 w JavaScript przez crova Użytkownik (940 p.)
0 głosów
1 odpowiedź 286 wizyt
pytanie zadane 22 czerwca 2017 w JavaScript przez crova Użytkownik (940 p.)
+2 głosów
3 odpowiedzi 932 wizyt
pytanie zadane 11 kwietnia 2021 w C i C++ przez Daaa22 Dyskutant (8,250 p.)

93,777 zapytań

142,736 odpowiedzi

323,388 komentarzy

63,381 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...