std::basic_string
类模板的成员函数 find_first_of 和 find_first_not_of 。
但是,<algorithm>
标头只包含通用的 find_first_of 。
问题1: 缺少
std::find_first_not_of(Iter1 first1, Iter1 last1, Iter2 first2, Iter2 last2)
只是疏忽(例如copy_if
)或是否故意省略,因为行为可以通过另一个标准函数来实现?
当然我可以写自己的 find_first_not_of ,但是
问题2: <algorithm>
中某处是否有现成的解决方法?例如,copy_if
remove_copy_if
的缺席
提前致谢
答案 0 :(得分:0)
最新的STL(Jump to)中添加了新功能。
all_of
,any_of
,none_of
,find_if_not
,copy_if
等。
答案 1 :(得分:0)
我不确定你的第一个问题,但我认为你能做的最好的是find_if:
template <class Iter>
class Check
{
public:
Check(Iter first, Iter last) : first_(first), last_(last) { }
template <class T>
bool operator()(const T& item) { return std::find(first, last, item) == last; }
private:
Iter first_;
Iter last_;
};
find_if(first1, last1, Check<Iter2>(first2, last2));
答案 2 :(得分:0)
写一个很容易:
pos = std::find(search_list.begin()...)
if (pos!= npos)
{
pos = std::find(black_list.begin()...)
if (pos!= npos)
{
continue search
}
else
{
found !!
}
}
else
{
not found
}