-1

理解すべきコードがあります。しかし、私はある点で迷子になっています。コードは次のとおりです。

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?
        }
    }
}

何がhieMapIt -> second返されますか?私は少し迷っています。

これはすべてのコードではなく、初期化などがあります。しかし、ここにすべてのコードを入れるわけではありません。

ありがとう、

4

3 に答える 3

5

を返しますTimeStampSet *。つまり、unordered_map(string、TimeStampSet *)「ペア」の2番目の部分です。

于 2013-01-20T14:27:19.027 に答える
2

コンテナのイテレータを間接参照すると、そのタイプがvalue_typeコンテナのオブジェクトになります。map<K, T>(またはunordered_map)の場合、はvalue_typeですpair<K const, T>。これにより、およびを使用it->firstit->secondて、マップ要素のキーとマップされた値にアクセスできます。

つまり、、、、 およびです。hostInfoIt->second_ _ したがって、です。HostInfo *...->hieMapArrHIEMap *hieMapItHIEMap::iteratorhieMapIt->secondTimeStampSet *

于 2013-01-20T14:31:56.893 に答える
1

std::unordered_map<K,V>はが含まれstd::pair<const K,V>ているため、イテレータをそのようなマップ要素の要素に間接参照すると、それらの1つを処理できます。そしてstd::pair<const K,V>::second、はV、あなたの場合はへのポインタですTimeStampSet

于 2013-01-20T14:27:38.683 に答える