排序函数不适用于c++中的二维向量
sort function not working with 2d vector in c++
我在C++中创建了一个2D矢量作为
vector< vector<float> *> mvector
mvector.push_back( new vector<float>(2,0.0))
每个矢量元素都包含一个指向大小为2的矢量的指针。我想使用C++中的预推排序函数,在第二个元素的基础上对向量进行排序。
我的代码是:
#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向量的引用是错误的有人能纠正吗?
vector< vector<float> > mvector;
sort(mvector.begin(), mvector.end(), [](const vector<float>& left, const vector<float>& right)
{
return left.at(1) < right.at(1);
});
相关文章:
- 我在二维向量中是否正确分配了内存
- 在二维向量或数组中可以存储的最大元素数是多少?
- 如何将整数字符串转换为整数的二维向量?
- 如何使用擦除和迭代器来删除二维向量中的项目
- 如何在二维向量c++中迭代col
- 如何在C++中将.csv文件的元素存储到二维向量中?
- std::vector::clear()ing 二维向量线程的内部向量安全吗?
- 在我为我的二维向量提供第一个值后控制台关闭
- 以C++输出二维向量
- 在 c++ 中赋值给二维向量
- 在二维向量的每一列中查找最大值
- 类对象初始化的二维向量
- 有没有办法像python:np.concatenate([x,y,z],axis=1)中那样沿着列连接三个二维向量C++
- 我如何在二维向量中存储一些数组
- 我可以push_back矩形形状到继承矩形形状的类的二维向量中吗?
- 二维向量的迭代器
- 在 STL 中,如何交换二维向量
- 创建一个二维向量阵列,遍历
- 创建二维向量的错误
- C++从文件中读取信息并从该信息构建二维向量