【发布时间】:2020-05-07 15:11:57
【问题描述】:
我正在尝试将 std::partition 与自定义 UnaryPredicate 一起使用。
void Rank(vector< pair<double, string> >& pairs) const
{
partition(pairs.begin(), pairs.end(), [](const pair<double, string>& a) { isnan(a.first); });
}
执行此操作时,我从 Visual Studio 2015 收到以下错误:
- 错误 C2297 '&&':非法,右操作数有类型 'void' 成像 c:\program files (x86)\microsoft visual studio 14.0\vc\include\算法1839
- 错误 C2171 '!':在类型为“void”的操作数上非法映像 c:\program files (x86)\microsoft visual studio 14.0\vc\include\算法1844
- 错误 C2297 '&&': 非法,右操作数的类型为 'void' 映像 c:\program files (x86)\microsoft 视觉工作室 14.0\vc\include\算法 1844
以下没有问题:
bool pairIsNan(const pair<double, string>& a)
{
return isnan(a.first);
}
partition(pairs.begin(), pairs.end(), pairIsNan);
谁能澄清第一组代码有什么问题以及如何解决?
【问题讨论】: