2014-10-07 68 views
-1

我想在C++中使用STL使用二進制搜索;二進制搜索矢量< struct S>在c + +?

struct Z{ 
    int i; 
    int j; 
}; 
struct S{ 
    Z z; 
    int k; 
}; 
vector<S> myvec; 
binary_search(myvec.begin(),myvec.end(),...); 

搜索條件如下。

e.g. binary_search(myvec.begin(),myvec.end(),S2); 
    and s2.z.i = 1 ; s2.z.j =2; s2.k = 4 ; 

如果我叫binary_search利用這些參數,那麼它應該返回true,如果there exist any struct S in vector "myvec" such that S.z.i = s2.z.i and S.z.j = s2.z.j and S.z.i!=s2.z.i .

最後如何使用STL這個向量排序?撥打sort(myvec.begin(),myvec.end());就足夠了。

+3

你有'bool操作符<(const S&,const S&)'? – Jarod42 2014-10-07 09:00:52

+0

我認爲不,任何方式對在那裏。 – user3919801 2014-10-07 09:03:14

+0

'binary_search'不知道如何比較'struct Z'!正如@ Jarod42所說,你必須自己寫。 – GingerPlusPlus 2014-10-07 09:42:59

回答

1

您必須提供operator <struct S的比較功能。