STL MAP에서 value 부분에 다른 map을 넣는 방법 좀 알려주세요....
글쓴이: sulsj / 작성시간: 금, 2006/07/28 - 12:43오후
안녕하세요
다음과 같이 해볼려고 하는데요...
typedef multimap<string, string> mmap_major_name; typedef map<string, multimap<string, string> > map_student;
먼저 mmap_major_name에 insertion을 하고 다시 map_student에 insert하려는데
잘 안되네요...
원래 문법상 오류이면 compile error가 날텐데 그렇지도 않고....
컴파일은 되는데 segmentation error가...쩝...
고수님들 도움 말씀을 부탁드립니다.
에고..정보가 넘 없었나요? 지송...^^
mmap_major_name G7, G8, U4; map_student student; ... while(getline(f_in,r,'\n')) { if (r.substr(25,2) == "G7") G7.insert(pair<string, string>(r.substr(31,4), r.substr(0,22))); else if (r.substr(25,2) == "G8") G8.insert(pair<string, string>(r.substr(31,4), r.substr(0,22))); else U4.insert(pair<string, string>(r.substr(31,4), r.substr(0,22))); } ... student.insert(pair<string, multimap<string, string> >(r.substr(25,2), G7)); student.insert(pair<string, multimap<string, string> >(r.substr(25,2), G8)); student.insert(pair<string, multimap<string, string> >(r.substr(25,2), U4));
이렇게 하면 안되는건가요?
음냐...
그럼 다시 부탁드립니다.
Forums:
도움을 드리고 싶어도
도움을 드리고 싶어도 정보가 너무 부족해요.
소스를 보여주세요.
map의 문제가
map의 문제가 아니군요.
getline()은 인수로 전달받은 스트링을 지우고 입력을 시작합니다.
즉 while을 빠져나온 후에는 r의 내용은 아무 것도 없는 거죠.
substr(25, 2)을 하려면 string의 길이가 최소한 25는 되어야 하는데
빈 스트링이니 오동작하는 겁니다.
이런 식으로 하면 되긴 합니다.
그건 그렇고 이 코드는 비효율적인 부분이 많군요. substr()을 반복해서
쓴다든지 map을 통째로 복사해서 insert 한다든지 하는 것들이죠.
조금만 신경쓰면 훨씬 효율적으로 할 수 있습니다.
답변 감사합니다.
답변 감사드립니다. ^^
댓글 달기