0

我不知道这是一个技巧问题还是什么,但是当我尝试运行这段代码时,我得到了一些错误。您认为老师忘记添加#include 行了吗?

#include <iostream>
#include <vector>
using namespace std;

int display(int val) {
    cout << val << ",";
}

int main() {
    int a[] = {1, -4, 5, -100, 15, 0, 5};
    vector<int> v(a, a + 7);

    sort(v.begin(), v.end(), greater<int>());
    for_each(v.begin(), v.end(), display);
}

.

g++ -ggdb  -c test.cpp
test.cpp: In function 'int main()':
test.cpp:13:41: error: 'sort' was not declared in this scope
test.cpp:14:38: error: 'for_each' was not declared in this scope
make: *** [test.o] Error 1

谢谢

4

2 回答 2

8

您认为老师忘记添加#include 行了吗?

是的。

他肯定忘记了:

#include <algorithm>

那是std::sort和等算法的标准库头文件std::for_each,这正是您的编译器所抱怨的。

顺便说一句,尽管您的编译器(还)没有抱怨这一点,但他也忘记了:

#include <functional>

std::greater<>这是您在此处使用的仿函数的标准库标头,例如。

此外,您的 (teacher's?)display()函数应该有void它的返回类型,因为它目前不返回任何值。

于 2013-02-18T23:20:02.493 回答
5

是的,您需要#include <algorithm>for std::sortand std::for_each,这很可能是您在说sortand时试图调用的内容for_each。该算法的效果是对数组a进行升序排序并将元素打印到标准输出。

于 2013-02-18T23:20:12.480 回答