小编ram*_*ram的帖子

C++使用函数对象对向量进行排序

我正在尝试使用另一个向量v2对向量v1进行排序.我无法解决这个错误:

在抛出'std :: out_of_range'的实例后调用终止
what():vector :: _ M_range_check
Abort trap

在运行此代码时:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

class Comp
{
    public:
        Comp(vector<double>& inVec): _V(inVec) {}
        bool operator()(int i, int j) {return (_V.at(i)<_V.at(j));}
    private:
        vector<double> _V;
};

int main(int argc, char** argv)
{
    double x1[] = {90.0, 100.0, 80.0};
    double x2[] = {9.0, 3.0, 1.0};
    vector<double> v1(x1,x1+3);
    vector<double> v2(x2,x2+3);

    sort(v1.begin(), v1.end(), Comp(v2));  // sort v1 according to v2

    for(unsigned int i=0; i<v1.size(); i++)
    {
        cout << v1.at(i) << …
Run Code Online (Sandbox Code Playgroud)

c++ sorting algorithm stl vector

5
推荐指数
2
解决办法
2427
查看次数

标签 统计

algorithm ×1

c++ ×1

sorting ×1

stl ×1

vector ×1