map에 pair을 넣을 때 헷갈려서
공부한 내용을 정리하는 글이다.
선언은
map<pair<int,int>,int> m;
새로 생성할 땐,
int a,b,c; //a,b,c의 변수가 있다고 했을때
m[{a,b}]=c;
int a,b,c; //a,b,c의 변수가 있다고 했을때
m[make_pair(a,b)]=c;
int a,b,c;
m.insert(make_pair(make_pair(a,b),c));
이런 식으로 할 수 있다.
iterator을 이용할 땐,
for (map<pair<int, int>, int>::iterator iter = m.begin(); iter != m.end();++iter) {
cout<<iter->first.first;
}
이런식으로 iter->first가 key값이고 , iter->second가 value값이다.
따라서 iter->first.first는 key값 pair<int,int>에서의 첫번째 값을 의미한다.
for (pair<const pair<int,int>,int> & elem : m) {
cout << elem.first.first<<" ";
cout << elem.first.second<<' ';
cout << elem.second<<'\n'; //이런식으로 first,second를 이용해서 값을 호출할 수 있다.
}
foreach형태를 사용할땐 std::pair<>을 두번 사용한다.
key값은 변경되면 안되는 값이라 const를 지정해줘야한다.
키값을 찾을 땐, 일반 map과 동일하게 find함수를 사용하여 찾는다.
if(m.find({2,4}) == m.end())
if(m.find(make_pair(2,4)) == m.end())