find_if 和find找一个空串的结果
- C/C++ code
int main(){int const n=6;char* s[6]={"xgdg"," ","hello","wordle"," ",""};vector<char*> coll;coll.reserve(10);for( int i=0;i<n; i++){ coll.push_back(s[i]);}vector<char*>:: const_iterator iter;copy(coll.begin(), coll.end(), ostream_iterator<char*>(cout," "));cout<<endl;iter=find_if(coll.begin(),coll.end(), bind2nd(ptr_fun(strcmp),"") );cout<<*iter<<endl; //结果是xgdg}
而
iter=find(coll.begin(),coll.end(), "" ); //*iiter的结果是""
这是怎么回事???
[解决办法]
LZ这个代码当然是返回第一个了
bind2nd绑定第二个参数,即:
strcmp(xx, "")
第一个参数传入上面的xx,整个会返回 >0 的数,当然被find_if立即返回了
[解决办法]
- C/C++ code
iter=find_if(coll.begin(),coll.end(), not1(bind2nd(ptr_fun(strcmp),"")) );