2017-06-07 12 views
0

私はいくつかのペア(INT、INT)を含むベクトルを持っています。 私は特定のものを検索したいが、そのペアのキーは1つしかない。 2番目のキーはどのように検索する必要がありますか?ベクトルの最初の値でペアを見つける

+0

['std :: find_if'](http://en.cppreference.com/w/cpp/algorithm/find)は、このような検索に有効です。 –

+1

https://stackoverflow.com/questions/12008059/find-if-and-stdpair-but-just-one-element – user2181624

+1

[find \ _ifとstd :: pairではなく、ただ1つの要素](https: //stackoverflow.com/questions/12008059/find-if-and-stdpair-but-just-one-element) – luk32

答えて

0

次のアルゴリズム(擬似コード)を使用することができます:ここで

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が含まれています。

関連する問題