私は、ローカルアドレスを解析する関数を見ています。返り値の選択肢の根拠に混乱しています。この関数は、私がのstd ::見つけるには_addressToCheck
探しセットを通過するが、セットの最後のイテレータと比較背後にある理由は何ができる戻り値の実際のコードを理解この関数の戻り値でイテレータを使用する目的は何ですか?
bool p2p::isLocalHostAddress(bi::address const& _addressToCheck)
{
// @todo: ivp6 link-local adresses (macos), ex: fe80::1%lo0
static const set<bi::address> c_rejectAddresses = {
{bi::address_v4::from_string("127.0.0.1")},
{bi::address_v4::from_string("0.0.0.0")},
{bi::address_v6::from_string("::1")},
{bi::address_v6::from_string("::")}
};
return find(c_rejectAddresses.begin(), c_rejectAddresses.end(), _addressToCheck) != c_rejectAddresses.end();
}
のですか?この場合、同じロジックは、セットの最後のイテレータと比較背後にある理由が何であるかを
return find(c_rejectAddresses.begin(), c_rejectAddresses.end(), _addressToCheck) != NULL;
おそらく、アイテムが見つからなかった場合、 'find'メソッドは終了イテレータを返します。 –
[これはまさに 'std :: find()'の動作](http://en.cppreference.com/w/cpp/algorithm/find)です。最初のイテレーターから2番目のイテレーターまでを含む入力コンテナを検索します。アイテムが見つかった場合は、そのアイテムのイテレータが返されます。項目が見つからない場合は、2番目のイテレータが返されます。これにより、 'std :: find()'(および他のすべてのSTLアルゴリズム)がコンテナに依存しないようにすることができます –
'NULL'の概念はイテレータにとって意味がありません。イテレータは、コンテナの有効な要素またはコンテナの 'end()'を指します。 –