比较器在C ++中获取超出数组边界的索引

时间:2015-03-20 09:27:34

标签: c++ sorting comparator

我正在尝试将带有ord的向量ord.size() = 100从第二个元素排序到结尾:

sort(ord.begin() + 1, ord.end(), comp);

但是功能comp()获得ord[101]。的为什么吗


comp列表:

bool comp(long long i, long long j){
    cout << i << " " << j << endl;
    return ((long long)x[i]-minx)*(y[j]-y[i]) <= ((long long)y[i]-minx_y)*(x[j]-x[i]);
}

comp输出的一部分:http://i.stack.imgur.com/bAaUq.png

1 个答案:

答案 0 :(得分:0)

#include <vector>
#include <algorithm>

bool comp(long long i, long long j){
    std::cout << i << " " << j << std::endl;
    return i < j;
}

int main(int argc, const char * argv[]) {


    std::vector<long long int> ord;
    ord.reserve(100);

    for(int i = 0; i < 100; ++i){
        ord.push_back( 101 - i );
    }

    std::sort(ord.begin() + 1, ord.end(), comp);

    return 0;
}

对我来说很好。我知道它不是您的确切代码,但仍然是。