【发布时间】:2015-12-07 00:20:06
【问题描述】:
我正在编写一个 c++ 程序来根据第一个元素对 int 对进行排序。
int a[5000][2];
我用这个命令调用排序函数:
sort(a, a + n, cmp);
其中n是我要排序的元素个数,cmp的定义如下:
bool cmp(int *a, int *b) {
return a[0] < b[0];
}
我已经包含了<algorithm>。但是,在使用 g++ 编译文件时,它失败并显示大量错误信息,全部指向 lib 文件而不是我的程序。我确定问题出在我调用的排序函数上,因为一旦我删除排序函数,编译就成功了。
有人知道我的程序有什么问题吗?
以下是一些错误信息:
In file included from /usr/include/c++/4.8/bits/stl_pair.h:59:0,
from /usr/include/c++/4.8/bits/stl_algobase.h:64,
from /usr/include/c++/4.8/bits/char_traits.h:39,
from /usr/include/c++/4.8/ios:40,
from /usr/include/c++/4.8/ostream:38,
from /usr/include/c++/4.8/iostream:39,
from milk2.cpp:7:
/usr/include/c++/4.8/bits/stl_algo.h: In instantiation of ‘void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = int (*)[2]; _Compare = bool (*)(int*, int*)]’:
/usr/include/c++/4.8/bits/stl_algo.h:2226:70: required from ‘void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = int (*)[2]; _Compare = bool (*)(int*, int*)]’
/usr/include/c++/4.8/bits/stl_algo.h:5500:55: required from ‘void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = int (*)[2]; _Compare = bool (*)(int*, int*)]’
milk2.cpp:32:29: required from here
/usr/include/c++/4.8/bits/stl_algo.h:2162:11: error: array must be initialized with a brace-enclosed initializer
__val = _GLIBCXX_MOVE(*__i);
我的程序是 milk2.cpp。第7行是:
#include <iostream>
第32行是调用排序函数的行
【问题讨论】:
-
“我确定问题出在排序功能上” - 不。它在你的代码中。
-
您能否至少显示一些“大量错误信息”?
-
milk2.cpp:32:29: required from here看第 32 行。