質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

942閲覧

C++ sort コンパイルエラー

unser

総合スコア58

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/05/18 01:30

c++でsortを行いたく,以下のコードを打つと

C++

1/* 2Policy: 3 we should sort x in ascending order and y in descending order, 4 and then we product it. 5*/ 6 7//reference p8 8#include <iostream> 9#include <algorithm> 10using namespace std; 11 12int MAX_N = 800; 13 14int main(){ 15 int n, x[MAX_N], y[MAX_N]; 16 17 scanf("%d", &n); 18 for(int i = 0; i<n; i++){ 19 scanf("%d", &x[i]); 20 } 21 for(int i = 0; i<n; i++){ 22 scanf("%d", &y[i]); 23 } 24 25 sort(x,x+n); 26 sort(y,y+n); 27 28 int res = 0; 29 for(int i = 0; i<n; i++){ 30 res += x[i]*y[n-1-i]; 31 } 32 return res; 33} 34 35void solve(){ 36 int res = main(); 37 printf("%d\n", res); 38}

terminal

1ndefined symbols for architecture x86_64: 2 "void std::__1::__sort<std::__1::__less<int, int>&, int*>(int*, int*, std::__1::__less<int, int>&)", referenced from: 3 _main in minimum_scalar-2b46ac.o 4ld: symbol(s) not found for architecture x86_64 5clang: error: linker command failed with exit code 1 (use -v to see invocation)

と返って来てしまいます。どのようにすればよろしいでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

プログラムは main から始まるので、元のコードだと
solve は呼び出されません。

C++

1#include <functional> 2 3const int MAX_N = 800; // const をつける 4 5int main() { 6 int res = solve(); 7 printf("%d\n", res); 8} 9 10int solve() { 11 ... 12 sort(y, y+n, greater<int>()); // y は降順にソート 13 ... 14 return res; 15}

投稿2020/05/18 02:57

編集2020/05/18 03:15
kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

unser

2020/05/19 00:07

ありがとうございます!
guest

0

std::less を欲しがってるみたいだから
#include <functional>
を追加してはいかがかと。

さもなくば以下↓のように比較関数を明示的に与えるか。
sort(x,x+n,[](int a, int b) { return a < b;});

投稿2020/05/18 01:36

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

unser

2020/05/19 00:07

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問