1
if (mySharedState -> liveIPs -> find(flowStats -> destinationIP) != mySharedState -> liveIPs -> end() ){
     //do something
}

unordered_map <uint32_t, std::string> *liveIPs;

私はそのような使用法(find(...)end()の使用法)を見たことがありません。誰かがそれが返すものについて私を助けることができますか?(ちなみにこれはc ++コードです)

4

2 に答える 2

4

この手法を使用して、コンテナにその値が含まれているかどうかを確認します。

find()その値に対応するイテレータをend()返し、コンテナの終わりを過ぎたイテレータ1を返します。これは、「値が見つかりません」を通知するために使用されます。

于 2013-01-07T09:11:26.047 に答える
1

関数 find(value) および end() は、さまざまなタイプ (リスト、セット、ベクター、マップなど) の要素を格納するために使用される「コンテナー」と呼ばれるクラスのメンバー関数です。コンテナーの詳細については、こちらを参照してください。

どちらのメンバー関数も、コンテナー要素への反復子 (一種のポインター) を返します。イテレータについては、こちらを参照してください。

抽象的に言えば、find(value) は、値と等しいコンテナー内の要素の位置を示します。そして end() は、コンテナーの末尾 (最後の要素の後ろの位置) を指すイテレーターを返します。

だからあなたの場合:

// from mSharedState get liveIPs (a container storing IPs)
// and find the element with value destinationIP
mSharedState->liveIPs->find(flowStats->destinationIP) 

// check if the iterator returned by find(flowStats->destinationIP) is different
// then the end of the liveIPs contatiner
!= liveIPs->end()

そのため、コンテナ liveIPs が値 destinationIP を持つ要素を保持している場合、「//do something」が実行されます。

通常、find(value) と end() はコンテナーのメンバー関数であるため、表示されているコード スニペットは、STL 準拠のコンテナーのメンバー関数の定義の一部であると思います (おそらく、ユーザー定義のコンテナーに準拠している可能性があります)。 find(value) と end() をメンバ関数として提供する STL コンテナ インターフェイス)。

于 2013-01-07T09:24:19.743 に答える