, , - (sequential containers). . , - .
STL - (associative containers). , -. , , . , , - .
8 , 3 :
● : -;
● : ;
● .
(key), , . - (map) , . - (set) , . - map, - - set.
, , , . -: . , ( -).
++ , /. , - ++11, . unordered_, hash_ . -, .
, . , , - . , .
|
|
multi. - , . , , . , . - , , , , .
, :
● std::map - ;
● std::set - ;
● std::multimap - - ;
● std::multiset - ;
● std::unordered_map - -;
● std::unordered_set - -;
● std::unordered_multimap - - - ;
● std::unordered_multiset - - .
Std::map
std::map . , - . , std::map . , , std::map .
std::map, : :
#include <map>
std::map< std::string, double > countriesSquare;
^ ^
-, , :
countriesSquare[ Ukraine ] = 603.628;
. insert:
countriesSquare.insert(std::make_pair(Ukraine, 603.628));
, -. ++ std::pair<K,V>. 2 : first second - , . , first, - second. for:
for (std::pair< std::string, double > p: countriesSquare)
std::cout << p.first << - << p.second << std::endl;
auto:
|
|
for (auto p: m1)
std::cout << p.first << - << p.second << std::endl;
std::make_pair - - , . , . :
std::pair(Ukraine, 603.628) // !
-:
std::pair< std::string, double >(Ukraine, 603.628) // ,
, :
std::make_pair(Ukraine, 603.628) // +
value_type map ( K V - ):
typedef std::pair< K, V > value_type;
, , []:
// , 603.628
std::cout << countriesSquare[ Ukraine ] << std::endl;
, , , - :
// , 0.0
// <Laplandia,0.0>
std::cout << countriesSquare[ Laplandia ] << std::endl;
, - at(), , :
// ,
std::cout << countriesSquare.at(Laplandia) << std::endl;
. -, . , , :
countriesSquare.at(Ukraine) = 603.629; // : ,
countriesSquare.at(Laplandia) = 1.015; // :
, count, 1, , 0, :
// , count 1
std::cout << countriesSquare.count(Ukraine) << std::endl;
// , count 0
std::cout << countriesSquare.count(Laplandia) << std::endl;
count() 1 - -, .
, , , find. :
std::map< std::string, double >::iterator it = countriesSquare.find(Ukraine)
auto :
auto it = countriesSquare.find(Ukraine)
, -, std::map std::pair< K, V >:
// ( find end()),
auto it = countriesSquare.find(Ukraine)
if (it!= countriesSquare.end())
std::cout << Country << it->first << has square of
// ^
//
<< it->second << km^2 << std::endl;
// ^
//
, lower_bound, upper_bound equal_ranges, , . , .
|
|
(bidirectional). , (++) (--), , . find(), begin()/end(). , std::map -, rbegin()/rend().
std::map , . , , . , , , . begin()/end() , cbegin()/cend(), - - crbegin()/crend().
- erase, 3 ( , , ):
//
countriesSquare.erase(Ukraine);
//
countriesSquare.erase(it);
//
auto it2 = it;
for (int i = 0; i < 3; i++)
++it2;
countriesSquare.erase(it, it2);
, . , .