编译代码时遇到问题。
template<class InputIterator, class UnaryPredicate>
bool all_of (InputIterator first, InputIterator last, UnaryPredicate pred)
{
while (first!=last) {
if (!pred(*first)) return false;
++first;
}
return true;
}
我从http://www.cplusplus.com/reference/algorithm/all_of/?kw=all_of获取了代码。
我正在使用Code :: blocks 12.11,我有以下错误:
C:\ Users \ PC-HP \ Desktop \ chiffre \ romain \ main.cpp ||实例化'bool all_of(InputIterator,InputIterator,UnaryPredicate)[with InputIterator = __gnu_cxx :: __ normal_iterator&gt ;; UnaryPredicate = bool(*)(std :: basic_string)]':|
C:\ Users \ PC-HP \ Desktop \ chiffre \ romain \ main.cpp | 84 |从这里要求|
C:\ Users \ PC-HP \ Desktop \ chiffre \ romain \ main.cpp | 13 |错误:从'char'无效转换为'const char *'[-fpermissive] |
c:\ program files \ codeblocks \ mingw \ bin .. \ lib \ gcc \ mingw32 \ 4.7.1 \ include \ c ++ \ bits \ basic_string.tcc | 214 | error:初始化'std :: basic_string&lt的参数1 ; _CharT,_Traits,_Alloc&gt; :: basic_string(const _CharT *,const _Alloc&amp;)[with _CharT = char; _Traits = std :: char_traits; _Alloc = std :: allocator]'[-fpermissive] |
|| ===构建完成:2个错误,2个警告(0分钟,1秒)=== |
第84行:
while(!all_of(romain.begin(), romain.end(), IsRoman))
我的整个代码都是:http://pastebin.com/k0KYNB6H
我不使用c++11
。
答案 0 :(得分:0)
根据您的错误消息,您的谓词需要std::basic_string
(可能真的是std::string
),但您正在迭代char
的序列。这些不会转换为std::string
。你想传递像
bool IsRoman(char c) {
return ...;
}
答案 1 :(得分:0)
pred
需要一个字符串,但在表达式pred(*first)
中,您只需要一个char
。