:: 게시판
:: 이전 게시판
|
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
09/07/23 15:07
두 가지 방법 있습니다. [] 연산자 활용이랑, 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(); }
09/07/23 16:33
XEEN님// 감사합니다. vec 을 통째로 넣는군요.
음; 그런데 map 에 key 와 data 를 따로 넣기는 여전히 아리송하네요. insert 나 [] 연산자를 사용해도 map1[vec_str1[0]] 에는 value 를 넣을수가 없으니까요.
09/07/23 17:08
map 구조를 key,data 로 잡아놓고 vec_str1[0] 을 넣을 수는 없죠. 그렇게 하려고 하셨다면
typedef string key; typedef string data; typedef map<key,data> cont; 로 잡으셨어야죠. key 와 data 는 같이 넣는거구요. 따로 넣을 수는 없습니다.
09/07/23 17:40
XEEN님// 그렇군요.
제가 본문에 말했던 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 는 이름의 벡터가 되는 맵을 정의해라' 라는 말을 제가 좀 이상하게 해석했나봅니다. 답변 감사합니다.
|