我用C ++创建了一个2D矢量
vector< vector<float> *> mvector
mvector.push_back( new vector<float>(2,0.0))
每个vector元素都包含一个指向大小为2的向量的指针。我想在C ++中使用pre-puilt排序函数对第二个元素进行排序。
我的代码是:
#include<iostream>
#include<vector>
#include<cmath>
#include<algorithm>
using std::cout;
using std::cin;
using std::endl;
using std::vector;
using std::sort;
int mycomp( vector<float> *a , vector<float > *b)
{
//return ((vector< vector<float> > *)a)[0][1] - (( vector< vector<float> > *)b)[0][1];
//return (vector < vector<float> *>*)a[0][1] - (vector< vector<float> *>*)b[0][1];
return a->at(1) - b->at(1);
}
int main(void)
{
vector< vector<float> * > mvector ;
int i;
for(i=0;i<2;i++)
{
mvector.push_back( new vector<float>(2,0.0) ) ;
cin >> mvector.back()->at(0) ;
mvector.back()->at(1) = sin(mvector.at(i)->at(0));
}
sort(mvector.begin() , mvector.end() , mycomp);
for(i=0;i<2;i++)
{
cout << mvector.at(i)->at(0) << " : " << mvector.at(i)->at(1) << endl;
}
return 0;
}
但排序功能不起作用,我认为我在排序函数中传递2D向量的引用时出错了。 任何人都可以纠正?
答案 0 :(得分:0)
vector< vector<float> > mvector;
sort(mvector.begin(), mvector.end(), [](const vector<float>& left, const vector<float>& right)
{
return left.at(1) < right.at(1);
});