4

ヒープがどのように機能し、最小要素と最大要素をどのように配置するかを知っています。ベクトルにがのみ含まれている場合int、STLでmake_heapを適用するのは簡単です。make_heap()しかし、vectorにstringとintの構造が含まれている場合の適用方法。int構造の値に基づいてヒープを作成したい。その方法を教えてください。

4

2 に答える 2

9

構造に比較機能を提供する必要があります。

struct A
{
 int x, y;
};

struct Comp
{
   bool operator()(const A& s1, const A& s2)
   {
       return s1.x < s2.x && s1.y == s2.y;
   }
};

std::vector<A> vec;
std::make_heap(vec.begin(), vec.end(), Comp());
于 2012-11-02T06:19:02.597 に答える
7

はい、必要な比較よりも少ないためstd::make_heapstd::pair<int, std::string>直接使用できます。上記のリンク先のリファレンスには、の特定のインスタンス化を使用した例もあります。std::pairoperator<std::pair

于 2012-11-02T06:48:32.503 に答える