请大家把我检查一个简单的C++程序。

#include
#include
#include
#include
using namespace std;
bool func(const string &);
int main(void)
{
vector vec{ "strings", "helloworld", "zay", "uah", "kakaka" };
auto it = partition(vec.cbegin(), vec.cend(), func);
auto begin = vec.begin();
while (begin != it)
{
cout << *begin << endl;
++begin;
}
return 0;
}
bool func(const string& str)
{
if (str.size() >= 5)
return true;
else
return false;
}
出现错误:没有找到接受……类型的左操作数的运算符(或没有可接受的转换)。

把partition里的迭代器类型改成,vec.begin(),vec.end().

it 应该是 bool 类型,但是 begin 确实字符串,两者之间比较没有办法转换吧

auto begin=vec.cbegin();

it是bool型,返回值为func的返回值
无法与指针相比

vector vec{ "strings", "helloworld", "zay", "uah", "kakaka" };
一个一个push进去。

我觉得可能是int 类型

vector ...还有 确保包含了正确的头文件