2013-01-20 2 views
-1

나는 이해할 수있는 코드 조각이있다. 그러나 나는 한 지점에서 길을 잃는다. 여기 코드입니다 :다음 C++ 코드는 무엇을 반환합니까?

hieMapIt -> second 수익을 무엇
typedef unordered_map <string, TimeStampSet *> HIEMap; 
typedef set <TimeStamp> TimeStampSet; 

struct HostInfo { 
    HostActivity *hostActivity; 
    HIEMap *hieMapArr; 
}; 

typedef unordered_map <uint32_t, HostInfo *> HostInfoMap; 

HIEMap::iterator hieMapIt; 

void method(...){ 
    for (hieMapIt = hostInfoIt -> second -> hieMapArr -> begin(); 
     hieMapIt != hostInfoIt -> second -> hieMapArr -> end(); 
     hieMapIt = nextMapIt) 
    { 
     if (hieMapIt -> second == NULL) { 
      //what does *hieMapIt -> second* returns? 
     } 
    } 
} 

? 나는 조금 잃었다.

이것은 모든 코드가 아니며 초기화 등이 있습니다. 그러나 나는 여기에 모든 코드를 넣지 않는다. 그것은 TimeStampSet *을 반환합니다

+4

'TimeStampSet *' –

+0

편집을 롤백하고 새 질문을 엽니 다. 이 질문을 적절하지 않다고 생각하면 삭제할 수 있지만 사람들의 시간이 잘 지냈다 고 생각하면 응답을 남기는 것이 좋습니다. –

답변

5

감사합니다. 즉, unordered_map (string, TimeStampSet *) "pair"의 두 번째 부분입니다.

+0

정말 빨리 :) 감사합니다 – smttsp

+0

질문을 편집했습니다 – smttsp

+1

@ tusherity 그건 부적절합니다. 좋은 답변을 여러 번 할 때 질문을 완전히 바꾸지 마십시오. – Bart

1

std::unordered_map<K,V>에는 std::pair<const K,V>이 포함되어 있으므로 이러한 맵 요소의 요소에 반복자를 역 참조하면 해당 요소 중 하나를 처리 할 수 ​​있습니다. 그리고 std::pair<const K,V>::second는 귀하의 경우 컨테이너의 반복자를 역 참조 TimeStampSet

2

에 대한 포인터는 당신에게 유형이 컨테이너의 value_type 인 객체를 제공하는 V을합니다. map<K, T> (또는 unordered_map)의 경우 value_typepair<K const, T>이므로 it->firstit->second을 사용하여지도 요소의 키와 매핑 된 값에 액세스 할 수 있습니다.

그래서 hostInfoIt->second...->hieMapArrHIEMap *이다하는 HostInfo *이며, hieMapItHIEMap::iterator이다. 따라서 hieMapIt->secondTimeStampSet *입니다.

+0

나는 질문을 편집했다 – smttsp

+1

@ tusherity : 지금 완전히 다른 질문이다. 나는 그 게임을하지 않을 것이다. (http://slash7.com/2006/12/22/vampires/) 새로운 질문을 올린다. 당신은 하나 있습니다. –

+0

좋아, 할 수있어. – smttsp

관련 문제