cpp map
키, 값의 쌍으로 구성된 연관 컨테이너.
#include <map>
+constructor
std::map<char, int> first ;
first['a']=10 ;
first['b']=30 ;
first['c'] = 50 ;
std::map<char,int> second (first.begin(), first.end() ) ;
std::map<char,int> thrid (second) ;
std::map<char, int, classcomp> fourth ;
struct classcomp {
bool operator() (const char&lhs, const char& rhs) const { return lhs<rhs ; }
} ;
+일반적인 함수
begin(), end(), cbegin, cend, rbegin, rend, crbegin, crend, size(), clear(), empty()
+at()
키값으로 요소를 찾아 값을 참조로 반환한다. []와 다르게 키가 없으면 익셉션(out_of_range) 발생.
std::map<std::string, int> mymap = { {"alpha", 0}, {"beta", 0}, {"gamma", 0} } ;
mymap.at("alpha") = 10 ;
mymap.at("beta") = 20 ;
mymap.at("gamma")=30 ;
mymap["alpha"]=40 ;
+count()
키 값이 일치하는 요소의 개수를 리턴한다. 따라서 0 또는 1만 리턴된다.
mymap.count( "alpha" ) ; 해당 키가 존재하면 1, 없으면 0
+emplace() (C++11)
새로운 요소를 맵에 추가한다. 중복된 키가 존재하면 추가나 업데이트가 되지 않는다.
std::map<char,int> map1 ;
map1.emplace('x', 100) ;
map1.emplace('y', 200) ;
for (auto x : map1 ) {
std::cout << x.first << ' ' << x.second << std::endl ;
}
+insert()
map1.insert( std::pair<char,int>('a', 100) ) ;
+find()
키로 이터레이터를 찾는다.
std::map<char,int>::iterator it ;
it = map1.find('b') ;
if ( it!= map1.end() ) map1.erase(it) ; // 키 'b'를 찾아 요소를 삭제한다.
+lower_bound, upper_bound
키로 범위를 정할 때 사용.
키가 a,b,c,d,e 가 있을 때
b~d까지의 범위
itlow = map1.lower_bound('b') ; // point to 'b'
itup = map1.upper_bound('d') ; // point to 'e' 주의!
map1.erase(itlow, itup) ; // 'b'~'d'까지 삭제함.
남은 요소는 a, e
+erase() ; 요소 삭제
erase(const_iterator pos) ;
erase(const key_type &k) ;
erase(const_iterator first, last) ;