STL MAP에서 value 부분에 다른 map을 넣는 방법 좀 알려주세요....

sulsj의 이미지

안녕하세요
다음과 같이 해볼려고 하는데요...

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));

이렇게 하면 안되는건가요?
음냐...

그럼 다시 부탁드립니다.

doldori의 이미지

도움을 드리고 싶어도 정보가 너무 부족해요.
소스를 보여주세요.

doldori의 이미지

map의 문제가 아니군요.
getline()은 인수로 전달받은 스트링을 지우고 입력을 시작합니다.
즉 while을 빠져나온 후에는 r의 내용은 아무 것도 없는 거죠.
substr(25, 2)을 하려면 string의 길이가 최소한 25는 되어야 하는데
빈 스트링이니 오동작하는 겁니다.

student.insert(pair<string, multimap<string, string> >("G7", G7));

이런 식으로 하면 되긴 합니다.

그건 그렇고 이 코드는 비효율적인 부분이 많군요. substr()을 반복해서
쓴다든지 map을 통째로 복사해서 insert 한다든지 하는 것들이죠.
조금만 신경쓰면 훨씬 효율적으로 할 수 있습니다.

sulsj의 이미지

답변 감사드립니다. ^^

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.