검색어 : map의 value가 vector
http://pgr21.com/pb/pb.php?id=bug&no=60211
map 을 사용하는데 궁금한게 있어서 질문합니다.
map 을 선언할 때
map<vector<string>, string> map1;
이런 식으로 선언한다면(즉 key 값을 vector 로 하고 싶다면) 어떻게 key 값을 insert 할 수 있나요?
혹시 무리한 시도를 하는건가요;
답변 주시면 감사하겠습니다~
ThEnd.
두 가지 방법 있습니다. [] 연산자 활용이랑, pair<> 활용
#include <iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;
typedef vector<string> key;
typedef string data;
typedef map<key,data> cont;
void main()
cont map1;
key vec_str1, vec_str2;
vec_str1.push_back("A");
vec_str1.push_back("B");
vec_str1.push_back("C");
vec_str2.push_back("1");
vec_str2.push_back("2");
vec_str2.push_back("3");
vec_str2.push_back("4");
map1[ vec_str1 ] = "ABC"; // 1. [] 연산자 사용
map1.insert( pair<key,data> (vec_str2, "1234") );
for (cont::const_iterator it= map1.begin(); it!= map1.end(); it++) {
const key& k = it->first;
const data& d = it->second;
cout << "#key: "<< k.size() << ", data= " << d << endl;
getchar();
}
감사합니다. vec 을 통째로 넣는군요.
음; 그런데 map 에 key 와 data 를 따로 넣기는 여전히 아리송하네요.insert 나 [] 연산자를 사용해도 map1[vec_str1[0]] 에는 value 를 넣을수가 없으니까요.
typedef string key;
typedef string data;
typedef map<key,data> cont;
로 잡으셨어야죠. key 와 data 는 같이 넣는거구요. 따로 넣을 수는 없습니다.
그렇군요.
제가 본문에 말했던
map<vector<string>, string> map1;
이라는 구조는, map 의 key 값을 vec[0], vec[1], vec[2].. 등등으로 잡아놓고
각각의 key 에 "Lim", "Lee", "Choi" 등을 value 를 묶을 수 있지 않을까... 하는 생각이었습니다.
vec[0] 의 값은 "Yo Hwan" 으로 하고요.
그래서 Last name 을 key 로, First name 을 value 로 하는 맵을 생각했습니다.
문제에서 'Key 는 이름의 벡터가 되는 맵을 정의해라' 라는 말을 제가 좀 이상하게 해석했나봅니다. 답변 감사합니다.
반응형
'차근차근 > C' 카테고리의 다른 글
[C++] map에서 find 를 이용해서 없는 항목 찾기 (0) | 2014.08.20 |
---|---|
About STL : C++ STL 프로그래밍(6)-해시 맵(Hash Map) (0) | 2014.08.20 |
c++ , map의 key값 중복시 => multimap사용 (0) | 2014.08.18 |
stl - map사용법 (0) | 2014.08.18 |
C++,STL :: list 사용하기 (0) | 2014.08.18 |