'for each' 不是 std 的成员。已启用 C++11 支持

'for each' is not a member of std. C++11 support already enabled

我教授作业中的代码如下。这是开箱即用的,我没有修改教授的代码。该程序还有更多内容,但这是发生错误的地方。问题行以粗体显示。

std::cout << "\nAll remaining courses with enrollments:\n";
allCourses = WSUCourse::getAllCourses();
std::for_each(
  allCourses.begin(),
  allCourses.end(),
  WSUCoursePrinter());

我收到以下错误。

g++    -c -g -std=c++11 -MMD -MP -MF "build/Debug/Cygwin_4.x-Windows/main.o.d" -o build/Debug/Cygwin_4.x-Windows/main.o main.cpp
main.cpp: In member function 'void WSUStudentPrinter::operator()(const WSUStudent*)':
main.cpp:26:20: error: 'to_string' is not a member of 'std'
       std::cout << std::to_string(studentPtr->getUniqueID()) <<
                    ^
main.cpp: In function 'void test()':
main.cpp:162:4: error: 'for_each' is not a member of 'std'
    std::for_each(
    ^
main.cpp:174:4: error: 'for_each' is not a member of 'std'
    std::for_each(
    ^
nbproject/Makefile-Debug.mk:84: recipe for target 'build/Debug/Cygwin_4.x-Windows/main.o' failed

总结一下,就像标题一样。 "'For each' is not a member of std" 我已经在编译它的所有 IDE 中启用了标准 11 支持。在代码块上,我将参数放在编译器设置中,在 netbeans 中,我在编译器的项目属性下更改了它,甚至 linux学校网络上的系统不会运行吧,同样的错误,我用的是标准的11包线。

关于如何解决这个问题的想法,任何人?它曾经给我所有位置的相同错误。

经评论确认:

您忘记包含 #include<algorithm>。包含必需的 header 以使符号 foreach 包含在 std 命名空间中,从而对程序的其余部分可见。

您的解决方案纯粹是 C++98,一个可能的 C++11 解决方案如下所示:

std::cout << "\nAll remaining courses with enrollments:\n";
for (auto & course : WSUCourse::getAllCourses())
{
    //whatever WSUCoursePrinter does.
    course.print() ;
}

我更喜欢这种方式,而且不需要算法头。