クラスcl1があります。
class c1
{
long double * coords;
...
}
私は2番目のクラスcl2も持っています:
class cl2
{
vector<cl1*> cl1_vec;
unsigned int d;
...
}
ベクトルの並べ替え関数を使用して、coords[d]に基づいてcl2からcl1_vecを並べ替えたいと思います。だから私は次のようなものを持つことができます
sort(cl2_inst->cl1_vec.begin(),cl2_inst->cl1_vec.end(), ??? );
私は次のようなアプローチを試しました
しかし、私はこれを解決する方法を作ることができませんでした。
このように来るどんな助けにも感謝します。
私が試したコード:
class cl1 {
public:
long double* coords;
cl1(long double *, unsigned int);
cl1();
cl1(const cl1& orig);
virtual ~cl1();
};
class cl2 {
public:
unsigned int d;
vector<cl1*> cl1_vec;
//the srting functions
static bool compareMyDataPredicate(cl1* lhs, cl1* rhs)
{
return (lhs->coords[d] < rhs->coords[d]);
};
// declare the functor nested within MyData.
struct compareMyDataFunctor : public binary_function<my_point*, my_point*, bool>
{
bool operator()( cl1* lhs, cl1* rhs)
{
return (lhs->coords[d] < rhs->coords[d]);
}
};
...
...
}
その後、メインで
std::sort(cl2_inst->cl1_vec.begin(),cl2_inst->cl1_vec.end(),cl2::compareMyDataPredicate() );