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<>です。

その上、あなたの(先生の?)display()関数はvoid、現在値を返さないため、戻り値の型として持っている必要があります。

于 2013-02-18T23:20:02.493 に答える
5

はい、必要があります#include <algorithm>for std::sortand std::for_each、これはおそらくsortand と言うときに呼び出そうとしているものですfor_each。アルゴリズムの効果は、配列aを昇順でソートし、要素を stdout に出力することです。

于 2013-02-18T23:20:12.480 に答える