【发布时间】:2015-02-23 07:00:38
【问题描述】:
我们可以使用构造函数作为谓词吗?到目前为止,我能够做到的是:
std::vector<const char*> v1 = {
"Hello", "from", "GCC", __VERSION__, "!"
};
std::vector<std::string> v2(v1.size());
std::transform(v1.begin(), v1.end(), v2.begin(),
[] (const char* s) { return std::string(s); });
但我想要一些方法来做std::tranform( ..., std::string)。我试过std::string::string、std::string::basic_string 和std::string::basic_string<char>。
【问题讨论】:
-
你不能用构造函数做到这一点。为什么不只是
vector<string> v2(v1.begin(), v1.end())? -
我也没有看到在你的问题中使用
std::transform的意义,你真的有XY问题吗? -
我认为你的意思是函子不是谓词;谓词返回一个布尔值。
-
这不是谓词。 predicate 是过滤条件。具体来说,它是一个接受一个参数并返回
bool的函数。 -
@Deduplicator 也许这是哲学上的,但我认为真正的谓词(在 CS 中)需要返回一个布尔值,并且某些函数只是为您执行此转换。在 C++ 的上下文中,它们确实不需要是函数,也不需要返回
bool,此外,标准甚至知道所谓的“二元谓词”,我发现这是一个奇怪的扩展术语。
标签: c++