无法将 std::sort 与 Android NDK 一起使用
Not able to use std::sort with Android NDK
ndk-build 总是抱怨 std::sort() 参数错误,并且在同一消息中找不到它。 ndk 是否使用其他功能?
candidate expects 2 arguments, 3 provided sort(centroids.begin() + i * 10, centroids.begin() + (i + 1) * 10, pointXGreater);
error: no matching function for call to
'sort(__gnu_cxx::__normal_iterator*,
std::vector > >,
__gnu_cxx::__normal_iterator*, std::vector > >, removeConvexity(cv::Mat, cv::Mat,
cv::Mat)::&)'
for (int i = 0; i < 10; i++)
{
sort(centroids.begin() + i * 10, centroids.begin() + (i + 1) * 10, pointXGreater);
}
这就是函数调用。
vector<cv::Point> centroids;
centroids.reserve(100);
for (int i = 0; i < contours.size(); i++) {
vector<cv::Point> contour = contours.at(i);
Moments mom = moments(contour);
cv::Point center = cv::Point(int(mom.m10 / mom.m00), int(mom.m01 / mom.m00));
centroids.push_back(center);
}
std::reverse(centroids.begin(), centroids.end());
struct {
bool operator()(const cv::Point p1, const cv::Point p2) {
return p1.x < p2.x;
}
} pointXGreater;
不知怎么的,我只能编译一次。现在问题又来了。
static bool pointXGreater(const cv::Point p1, const cv::Point p2)
{
return p1.x < p2.x;
}
for (int i = 0; i < 10; i++)
{
sort(centroids.begin() + i * 10, centroids.begin() + (i + 1) * 10, pointXGreater);
}
解决了问题。
ndk-build 总是抱怨 std::sort() 参数错误,并且在同一消息中找不到它。 ndk 是否使用其他功能?
candidate expects 2 arguments, 3 provided
sort(centroids.begin() + i * 10, centroids.begin() + (i + 1) * 10, pointXGreater);
error: no matching function for call to 'sort(__gnu_cxx::__normal_iterator*, std::vector > >, __gnu_cxx::__normal_iterator*, std::vector > >, removeConvexity(cv::Mat, cv::Mat, cv::Mat)::&)'
for (int i = 0; i < 10; i++)
{
sort(centroids.begin() + i * 10, centroids.begin() + (i + 1) * 10, pointXGreater);
}
这就是函数调用。
vector<cv::Point> centroids;
centroids.reserve(100);
for (int i = 0; i < contours.size(); i++) {
vector<cv::Point> contour = contours.at(i);
Moments mom = moments(contour);
cv::Point center = cv::Point(int(mom.m10 / mom.m00), int(mom.m01 / mom.m00));
centroids.push_back(center);
}
std::reverse(centroids.begin(), centroids.end());
struct {
bool operator()(const cv::Point p1, const cv::Point p2) {
return p1.x < p2.x;
}
} pointXGreater;
不知怎么的,我只能编译一次。现在问题又来了。
static bool pointXGreater(const cv::Point p1, const cv::Point p2)
{
return p1.x < p2.x;
}
for (int i = 0; i < 10; i++)
{
sort(centroids.begin() + i * 10, centroids.begin() + (i + 1) * 10, pointXGreater);
}
解决了问题。