0
我有這個std :: find_if()類似的方法,返回找到的迭代器(匹配「條件」仿函數)。從像std :: find_if方法返回的迭代器不匹配常規迭代器
template<class T, class Function>
typename std::set<T>::iterator setFindIf(set<T> set, Function condition) {
typename std::set<T>::iterator iterator = set.begin();
for (; iterator != set.end(); iterator++) {
cout<<"U";
if (condition(*iterator)) {
break;
}
}
return iterator;
}
而此行調用它:
std::set<Order>::iterator it = setFindIf(orders, orderCustomerHasOpenOrder(id, ordNum));
我在一個空集檢測,所以這條線(附帶上述行之後)應打印「1」:
cout<<(it==orders.end());
爲什麼不能正常工作?當我在setFindIf()方法的末尾添加此行時,它會按預期打印「1」。