構造体タイプのキューがあります
struct test {
int numbers;
};
queue<test> q;
最小値を見つける方法:
q.front().numbers;
たとえば、数が5,1,3の場合、1を見つける必要があります。
整数のキューが必要なので、最も簡単な解決策は を使用することstd::deque<int>
です。次にstd::min_element
、キュー内の最小要素を見つけるために使用できます。
std::deque<int> q{5, 1, 3};
std::deque<int>::iterator it = std::min_element(q.begin(), q.end());
std::cout << *it << std::endl;
そうすることで、 を使用する必要がなくなりますstruct test
。整数を格納しているように見えるため、これは特に当てはまります。一方、struct test
より複雑な(フィールドが多い)場合は、まったく同じアプローチを使用できますが、比較関数を定義できますstruct test
(このような比較関数の例については、@fljx の回答を参照してください)。
のみを使用できる場合はqueue
、実行できる操作の種類が制限されます。したがって、次のようにする必要があります。
std::queue<int> q;
/* fill queue ... */
int min_value = INT_MAX;
std::size_t size = q.size();
while (size-- > 0) {
int x = q.front();
q.pop();
q.push(x);
if (x < min_value)
min_value = x;
}
ウェブ上でそれを説明するページがたくさんあります。
operator <
構造を比較する方法を伝える必要があります。
struct test {
int numbers;
bool operator < ( const test &t ) const
{ return this->numbers < t.numbers; }
};
(私はこのコードのばかげたエラーをテストしていませんが、問題が見つかった場合は以下のリンクが役立つ場合があります)。
その後、 を使用#include <algorithm>
して にアクセスしmin_element()
ます。
参考文献: http://www.cplusplus.com/reference/algorithm/min_element/ http://courses.cms.caltech.edu/cs11/material/cpp/donnie/cpp-ops.html