Próbuję posortować wektor v1 za pomocą innego wektora v2. I nie można zawijać moja głowa wokół tego błędu:C++ sortuj wektor używając obiektu funkcji
terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check
Abort trap
podczas uruchamiania tego kodu:
#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) << " " << v2.at(i) << endl;
}
return 0;
}
v1
i v2
są tej samej wielkości. Dlaczego błąd out_of_range
?
Z góry dziękuję za wszelkie wskazówki.
Twoja klasa "Comp" powinna zawierać odniesienie do wektora, zamiast go kopiować. – Tim