0
私はいくつかのペア(INT、INT)を含むベクトルを持っています。 私は特定のものを検索したいが、そのペアのキーは1つしかない。 2番目のキーはどのように検索する必要がありますか?ベクトルの最初の値でペアを見つける
私はいくつかのペア(INT、INT)を含むベクトルを持っています。 私は特定のものを検索したいが、そのペアのキーは1つしかない。 2番目のキーはどのように検索する必要がありますか?ベクトルの最初の値でペアを見つける
次のアルゴリズム(擬似コード)を使用することができます:ここで
let vec be the input vector
let key be the value that you are searching
for each pair p in vec
let p_1 be p.first
if p_1 == key
return you have found the key
は、再利用可能なコンポーネントを抽出するための機能的なアプローチである:今
find_if(beg, end, predicate):
let beg be an iterator to the beginning of a sequence
let end be an iterator to the end of a sequence
let predicate be a function from container element to boolean
for each iterator in beg...end
let element be what the iterator points to
if predicate(element)
return iterator
を、カスタム述語関数を定義することができます:
my_predicate(p):
let p be a pair
let p_1 be p.first
let key be the value that you are searching
return p_1 == key
と使用find_if:
let vec be the input vector
found_iterator = find_if(begin(vec), end(vec), my_predicate)
C++標準ライブラリには、擬似コードとほとんど同じインターフェイスを持つstd::find_if
が含まれています。
['std :: find_if'](http://en.cppreference.com/w/cpp/algorithm/find)は、このような検索に有効です。 –
https://stackoverflow.com/questions/12008059/find-if-and-stdpair-but-just-one-element – user2181624
[find \ _ifとstd :: pairではなく、ただ1つの要素](https: //stackoverflow.com/questions/12008059/find-if-and-stdpair-but-just-one-element) – luk32