繁体   English   中英

为什么count_if()没有算法头就可以工作?

[英]Why does count_if() work without algorithm header?

尝试使用C ++时,我从网络搜索中获取了所需的辅助函数,并在C ++参考中查找它之前对其进行了尝试:

int count_vowels(const std::string &input) {
    return std::count_if(input.begin(), input.end(), is_vowel);
}

当我查看有关count_if()的更多详细信息时,我发现它是<algorithm>库代码( http://www.cplusplus.com/reference/algorithm/count_if/ )的一部分,在编译时并未包括在内并运行它。 为什么没有<algorithm>标头的函数可以工作? 我已经包括了<iostream>,<string>(显然)和<sstream <>。 如果这很重要,我将使用编译标志-std=c++11

另外,如果没有<algorithm>标头也可以工作,为了清晰起见,我还是应该将该标头放在任何地方(或者因为其他编译器不一定会选择必要的函数定义)?

之所以起作用,是因为它可能是通过其他头文件之一间接包含的。 但是不能保证,它可能会在其他编译器或您现在使用的编译器的将来版本上中断。

直接包含所有需要的标题。

如果您使用的是Visual C ++,则可以通过“项目”->“设置”->“ C / C ++”->“高级”打开“显示包含”以查看包含的文件。

如果使用gcc,则说明了等效项: / show在g ++中包括等效项

然后,您将知道它的包含位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM