muszę mieć mapę takiego:Wyszukiwanie i Wstawianie w mapie z 3 elementów w C++
typedef std::map<int, float , char> Maptype ;
Jaka jest składnia do wstawienia i wyszukiwanie elementów pary w tej mapie.
muszę mieć mapę takiego:Wyszukiwanie i Wstawianie w mapie z 3 elementów w C++
typedef std::map<int, float , char> Maptype ;
Jaka jest składnia do wstawienia i wyszukiwanie elementów pary w tej mapie.
Można odwzorować tylko jeden typ klucza na jeden typ danych. Jeśli dane zawierają 2 elementy, użyj struct lub std::pair
.
typedef std::map<int, std::pair<float, char> > Maptype;
...
Maptype m;
m[123] = std::make_pair(0.5f, 'c');
...
std::pair<float, char> val = m[245];
std::cout << "float: " << val.first << ", char: " << val.second << std::endl;
Należy unikać kopiowania pary z mapy, przypisując odniesienie: std :: pair
Nie możesz mieć trzech elementów. STL map
przechowuje parę klucz-wartość. Musisz zdecydować, co zamierzasz użyć jako klucza. Gdy to zrobisz, możesz prawdopodobnie gniazdo dwa pozostałe w osobnej mapie i używać go jako:
typedef std::map<int, std::map<float, char> > MapType;
Aby wstawić na mapie, użyj operator[]
lub funkcji składowej insert
. Możesz wyszukiwać za pomocą funkcji składowej find
.
MapType m;
// insert
m.insert(std::make_pair(4, std::make_pair(3.2, 'a')));
m[ -4 ] = make_pair(2.4, 'z');
// fnd
MapType::iterator i = m.find(-4);
if (i != m.end()) { // item exists ...
}
Dodatkowo można spojrzeć na Boost.Tuple.
Dzięki za informacje. Jak wyszukać parę w Mapie? Czy będzie to m.find (STD :: make_pair (3.2, "a");? – John
@John: Zawsze wyszukujesz klucz, jeśli twój klucz jest typu "para
@dirkgently: powyższy przykład nie działa, jeśli używam dwóch instancji wskaźnika klasy i ciągu znaków, takich jak typedef std :: map
Zastosowanie albo
std::map<std::pair<int, float>, char>
lub
std::map<int, std::pair<float, char> >
cokolwiek jest poprawne.
Który (e) jest/są klucz (y)? – sbi
Sprawdź, czy tutaj się nie mylisz. Mapa może zawierać trzeci element, jeśli jest to polecenie zamawiania. – Owl