有什麼方法可以組合謂詞嗎?組合謂詞
可以說我有這樣的事情:
class MatchBeginning : public binary_function<CStdString, CStdString, bool>
{ public:
bool operator()(const CStdString &inputOne, const CStdString &inputTwo) const
{ return inputOne.substr(0, inputTwo.length()).compare(inputTwo) == 0; }
};
int main(int argc, char* argv[])
{
CStdString myString("foo -b ar -t az");
vector<CStdString> tokens;
// splits the string every time it encounters a "-"
split(myString, tokens, "-", true, true);
vector<CStdString>::iterator searchResult = find_if(tokens.begin(), tokens.end(), not1(bind2nd(MatchBeginning(), "-")));
return 0;
}
這工作,但現在我想這樣做:
searchResult = find_if(tokens.begin(), tokens.end(), bind2nd(MatchBeginning(), "-b") || not1(bind2nd(MatchBeginning(), "-")));
所以我想找到的第一個字符串以「-b」或不以「 - 」開頭的第一個字符串開頭。但是,這給了我一個錯誤(二進制'||'未定義)。
有沒有辦法做到這一點?
您可能還需要一個shim函數來進行編譯:類沒有模板參數推理。 – xtofl 2009-02-13 10:46:53
Thx爲了指出這一點,我編輯了答案,並修復了一些其他部分... – gimpf 2009-02-13 12:22:53