Narzędzia użytkownika

Narzędzia witryny


opis_kontenera:multimap

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Previous revision
Next revision
Previous revision
opis_kontenera:multimap [2008/11/09 20:44]
adrianf0
opis_kontenera:multimap [2008/11/15 23:19] (aktualna)
adrianf0
Linia 1: Linia 1:
 ==========Multimap========== ==========Multimap==========
  
-Multimapa (podobnie jak mapa) to posortowany kontener asocjacyjny,​ czyli zbiornik o zmiennej długości gromadzący dane, które można dodawać i usuwać. Jest ona zbiornikiem parowym, a więc jej elementami są pary wartości: klucz i dana. Pierwszej wartości key_type, ​czyli klucza ​multimapy, nie można zmieniać, natomiast druga wartość danej jest przypisywalna (np.(*i).second=2). Elementów multimapy nie można dodawać na konkretną pozycje, ponieważ ich kolejność ustalana jest wg danej klucz. Multimapa **nie jest unikalnym kontenerem asocjacyjnym**,​ a więc dwa elementy mogą posiadać ten sam klucz.+Multimapa (podobnie jak mapa) to posortowany kontener asocjacyjny,​ czyli zbiornik o zmiennej długości gromadzący dane, które można dodawać i usuwać. Jest ona zbiornikiem parowym, a więc jej elementami są pary wartości: klucz i dana. Pierwszej wartości ​typu key_type, ​będącej kluczem ​multimapy, nie można zmieniać, natomiast druga wartość danej jest przypisywalna (np.(*i).second=2). Elementów multimapy nie można dodawać na konkretną pozycje, ponieważ ich kolejność ustalana jest wg danej klucz. Multimapa **nie jest unikalnym kontenerem asocjacyjnym**,​ a więc dwa elementy mogą posiadać ten sam klucz.
  
-{{:​multimap:​multimap2.cpp|Przykładowy program wykorzystujący multimape.}}+{{:​multimap:​multimap4.cpp|Przykładowy program wykorzystujący multimape.}}
  
 Multimapa zdefiniowana jest w standardowym nagłówku map oraz w niestandardowym,​ wstecznie kompatybilnym nagłówku map.h. Multimapa zdefiniowana jest w standardowym nagłówku map oraz w niestandardowym,​ wstecznie kompatybilnym nagłówku map.h.
Linia 48: Linia 48:
 |void clear() | Usuwa wszystkie elementy. //​Złożoność czasowa: liniowa.//| |void clear() | Usuwa wszystkie elementy. //​Złożoność czasowa: liniowa.//|
 |iterator find(const key_type&​ k) | Znajduje element, którego kluczem jest k.//​Złożoność czasowa: logarytmiczna.//​| |iterator find(const key_type&​ k) | Znajduje element, którego kluczem jest k.//​Złożoność czasowa: logarytmiczna.//​|
-|const_iterator find(const key_type&​ k) const | Znajduje element, którego kluczem jest k.|+|const_iterator find(const key_type&​ k) const | Znajduje element, którego kluczem jest k.//​Złożoność czasowa: logarytmiczna.//​|
 |size_type count(const key_type&​ k) | Zlicza elementy, których kluczem jest k.//​Złożoność czasowa: logarytmiczna.//​| |size_type count(const key_type&​ k) | Zlicza elementy, których kluczem jest k.//​Złożoność czasowa: logarytmiczna.//​|
 |iterator lower_bound(const key_type&​ k) | Znajduje pierwszy element, którego klucz jest nie mniejszy niż k.//​Złożoność czasowa: logarytmiczna.//​| |iterator lower_bound(const key_type&​ k) | Znajduje pierwszy element, którego klucz jest nie mniejszy niż k.//​Złożoność czasowa: logarytmiczna.//​|
 |const_iterator lower_bound(const key_type&​ k) const | Znajduje pierwszy element, którego klucz jest nie mniejszy niż k.//​Złożoność czasowa: logarytmiczna.//​| |const_iterator lower_bound(const key_type&​ k) const | Znajduje pierwszy element, którego klucz jest nie mniejszy niż k.//​Złożoność czasowa: logarytmiczna.//​|
-|iterator upper_bound(const key_type&​ k) | Znajduje pierwszy element, którego klucz jest wiekszy niż k.| +|iterator upper_bound(const key_type&​ k) | Znajduje pierwszy element, którego klucz jest wiekszy niż k.//​Złożoność czasowa: logarytmiczna.//​
-|const_iterator upper_bound(const key_type&​ k) const | Znajduje pierwszy element, którego klucz jest wiekszy niż k.|+|const_iterator upper_bound(const key_type&​ k) const | Znajduje pierwszy element, którego klucz jest wiekszy niż k.//​Złożoność czasowa: logarytmiczna.//​|
 |[[multimap#​equal_range | pair<​iterator,​ iterator>​ equal_range(const key_type&​ k) ]]| Znajduje zakres zawierający wszystkie elementy o kluczu k.| |[[multimap#​equal_range | pair<​iterator,​ iterator>​ equal_range(const key_type&​ k) ]]| Znajduje zakres zawierający wszystkie elementy o kluczu k.|
 |[[multimap#​equal_range | pair<​const_iterator,​ const_iterator>​ equal_range(const key_type&​ k) const]] | Znajduje zakres zawierający wszystkie elementy o kluczu k.| |[[multimap#​equal_range | pair<​const_iterator,​ const_iterator>​ equal_range(const key_type&​ k) const]] | Znajduje zakres zawierający wszystkie elementy o kluczu k.|
Linia 71: Linia 71:
 Multimapy posiadaja kilka konstruktorów:​ Multimapy posiadaja kilka konstruktorów:​
  
-  * Domyślny konstruktow jest bezparametrowy i tworzy nową instancję ​multimapynts, ​złożonośćstała. +  * Domyślny konstruktow jest bezparametrowy i tworzy nową instancję ​multimapy. Jego złożoność ​czasowa jest stała. 
-  * Domyślny konstruktor ​koopiujący (złożoność: stała) może być użyty to tworzenia nowej multimapy będącej kopią danej multimapy c.+  * Domyślny konstruktor ​kopiujący (stała ​złożoność ​czasowa) może być użyty to tworzenia nowej multimapy będącej kopią danej multimapy c.
   * Multimapy mogą być również utworzone z zakresu zdefiniowego przez begin oraz end. Używając konstruktora,​ opcjonalnie można dostarczyć key_compare&​ oraz allocator wykorzystywany do zarządzania pamięcią wewnętrzną.   * Multimapy mogą być również utworzone z zakresu zdefiniowego przez begin oraz end. Używając konstruktora,​ opcjonalnie można dostarczyć key_compare&​ oraz allocator wykorzystywany do zarządzania pamięcią wewnętrzną.
  
Linia 95: Linia 95:
  
     int employeeID = 0;     int employeeID = 0;
-    m.insert( pair<​string,​int>​("​Bob Smith",​employeeID++) ); +    m.insert( pair<​string,​int>​("​Kowalski",​employeeID++) ); 
-    m.insert( pair<​string,​int>​("​Bob Thompson",​employeeID++) ); +    m.insert( pair<​string,​int>​("​Nowak",​employeeID++) ); 
-    m.insert( pair<​string,​int>​("​Bob Smithey",​employeeID++) ); +    m.insert( pair<​string,​int>​("​Matuszak",​employeeID++) ); 
-    m.insert( pair<​string,​int>​("​Bob Smith",​employeeID++) );+    m.insert( pair<​string,​int>​("​Kowalski",​employeeID++) );
  
-    cout << "Number of employees named 'Bob Smith': " << m.count("​Bob Smith") << endl; +    cout << "Liczba pracownikow o nazwisku ​'Kowalski': " << m.count("​Kowalski") << endl; 
-    cout << "Number of employees named 'Bob Thompson': " << m.count("​Bob Thompson") << endl; +    cout << "Liczba pracownikow o nazwisku ​'Nowak': " << m.count("​Nowak") << endl; 
-    cout << "Number of employees named 'Bob Smithey': " << m.count("​Bob Smithey") << endl;+    cout << "Liczba pracownikow o nazwisku ​'Matuszak': " << m.count("​Matuszak") << endl;
  
-    cout << "Employee list: " << endl;+    cout << "Lista pracownikow: " << endl;
     for( multimap<​string,​ int>::​iterator iter = m.begin(); iter != m.end(); ++iter ) {     for( multimap<​string,​ int>::​iterator iter = m.begin(); iter != m.end(); ++iter ) {
-      cout << " ​Name: " << iter->​first << ", ID #" << iter->​second << endl;+      cout << " ​Nazwisko: " << iter->​first << ", ID #" << iter->​second << endl;
     }     }
 </​code>​ </​code>​
Linia 113: Linia 113:
  
 <code terminal>​ <code terminal>​
-    ​Number of employees named 'Bob Smith': 2 +    ​Liczba pracownikow o nazwisku ​'Kowalski': 2 
-    ​Number of employees named 'Bob Thompson': 1 +    ​Liczba pracownikow o nazwisku ​'Nowak': 1 
-    ​Number of employees named 'Bob Smithey': 1 +    ​Liczba pracownikow o nazwisku ​'Matuszak': 1 
-    ​Employee list+    ​Lista pracownikow
-     NameBob Smith, ID #0 +     NazwiskoKowalski, ID #0 
-     NameBob Smith, ID #3 +     NazwiskoKowalski, ID #3 
-     NameBob Smithey, ID #2 +     NazwiskoMatuszak, ID #2 
-     NameBob Thompson, ID #1+     NazwiskoNowak, ID #1
 </​code>​ </​code>​
 =====Operatory===== =====Operatory=====
Linia 200: Linia 200:
  
     int employeeID = 0;     int employeeID = 0;
-    m.insert( pair<​string,​int>​("​Bob Smith",​employeeID++) ); +    m.insert( pair<​string,​int>​("​Kowalski",​employeeID++) ); 
-    m.insert( pair<​string,​int>​("​Bob Thompson",​employeeID++) ); +    m.insert( pair<​string,​int>​("​Nowak",​employeeID++) ); 
-    m.insert( pair<​string,​int>​("​Bob Smithey",​employeeID++) ); +    m.insert( pair<​string,​int>​("​Matuszak",​employeeID++) ); 
-    m.insert( pair<​string,​int>​("​Bob Smith",​employeeID++) );+    m.insert( pair<​string,​int>​("​Kowalski",​employeeID++) );
  
-    cout << "Number of employees named 'Bob Smith': " << m.count("​Bob Smith") << endl; +    cout << "Liczba pracownikow o nazwisku ​'Kowalski': " << m.count("​Kowalski") << endl; 
-    cout << "Number of employees named 'Bob Thompson': " << m.count("​Bob Thompson") << endl; +    cout << "Liczba pracownikow o nazwisku ​'Nowak': " << m.count("​Nowak") << endl; 
-    cout << "Number of employees named 'Bob Smithey': " << m.count("​Bob Smithey") << endl;+    cout << "Liczba pracownikow o nazwisku ​'Matuszak': " << m.count("​Matuszak") << endl;
  
-    cout << "Employee list: " << endl;+    cout << "Lista pracownikow: " << endl;
     for( multimap<​string,​ int>::​iterator iter = m.begin(); iter != m.end(); ++iter ) {     for( multimap<​string,​ int>::​iterator iter = m.begin(); iter != m.end(); ++iter ) {
-      cout << " ​Name: " << iter->​first << ", ID #" << iter->​second << endl;+      cout << " ​Nazwisko: " << iter->​first << ", ID #" << iter->​second << endl;
     }     }
 </​code>​ </​code>​
Linia 218: Linia 218:
  
 <code terminal>​ <code terminal>​
-  ​Number of employees named 'Bob Smith': 2 +  ​Liczba pracownikow o nazwisku ​'Kowalski': 2 
-  ​Number of employees named 'Bob Thompson': 1 +  ​Liczba pracownikow o nazwisku ​'Nowak': 1 
-  ​Number of employees named 'Bob Smithey': 1 +  ​Liczba pracownikow o nazwisku ​'Matuszak': 1 
-  ​Employee list+  ​Lista pracownikow
-   NameBob Smith, ID #0 +   NazwiskoKowalski, ID #0 
-   NameBob Smith, ID #3 +   NazwiskoKowalski, ID #3 
-   NameBob Smithey, ID #2 +   NazwiskoMatuszak, ID #2 
-   NameBob Thompson, ID #1+   NazwiskoNowak, ID #1
 </​code>​ </​code>​
  
opis_kontenera/multimap.1226259877.txt.gz · ostatnio zmienione: 2008/11/09 20:44 przez adrianf0