.


:




:

































 

 

 

 


STL-




 

, , - (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);

 

, . , .





:


: 2017-01-21; !; : 803 |


:

:

,
==> ...

1692 - | 1630 -


© 2015-2024 lektsii.org - -

: 0.039 .