0

これが質問です。私は構造体を定義しました:

typedef struct {

        long t;
        long M;
        long double coeff;
} Info;

そして、次のプログラムの構造体の数しか知りません。したがって、次のように書きました。

Info p = (Info ) malloc (sizeof(Info) * sum ); (sum は倍長整数)

そして今、「coeff」に従って昇順で構造体配列をソートしたいと思います。

どうすれば VC++6.0 で実現できますか?

どうもありがとう!

4

2 に答える 2

2

比較関数を実装してから std::sort を呼び出すことができます。

bool comparator(const Info& p1, const Info& p2)
{
  return p1.coeff < p2.coeff;
}

<スタンドアロンの比較関数を記述する代わりに、構造体定義で演算子をオーバーロードすることもできます。

次に std::sort を呼び出します

std::sort(A, A+sum, comparator);

Aそれがあなたの構造体配列であると仮定します。

于 2013-04-17T16:36:14.123 に答える
2

適切な比較ファンクターでstd::sortを使用します。

bool cmp(const Info& lhs, const Info& rhs)
{
  return lhs.coeff < rhs.coeff;
}

それから

#include <algorithm>

std::sort(p, p + sum, cmp);

pオブジェクトを含む配列の最初の要素へのポインタであると仮定しsum Infoます。

std::vectorしかし、C++ では通常、動的に割り当てられた配列よりも を好むでしょう。

std::vector<Info> v(sum); // contains sum default constructed Infos

それから

std::sort(v.begin(), v.end(), cmp);

typedef次の構文も必要ありません。

struct Info {
    long t;
    long M;
    long double coeff;
};
于 2013-04-17T16:37:09.507 に答える