0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【C++】vectorの最大、最小値のインデックスを取得する

Last updated at Posted at 2024-08-07

maxで最大値を取得すること自体は忘れないのですが、インデックスを取得する方法はよく忘れてしまうので、備忘録として記事にしてみました。
イテレータを取得するとインデックスと値の両方を取得できるので良いですね。

max_elementで取得する

まずmax_elementでイテレータを取得して、それにdistanceを利用してインデックスを取得します。

ちなみにdistanceではvectorの最初の要素と見つかった最大値のイテレータとの差を取得しています。

// 最大値のイテレータを取得
auto iterator = std::max_element(vec.begin(), vec.end());
// 最大値のインデックスを取得
int index = std::distance(vec.begin(), iterator);

ちなみに、最小値の場合はmax_elementの代わりにmin_elementを利用します。

// 最小値のイテレータを取得
auto iterator = std::min_element(vec.begin(), vec.end());
// 最小値のインデックスを取得
int index = std::distance(vec.begin(), iterator);

max_elementから最大値の値を取得する

先ほど取得したイテレータから値を取得することも出来ます!

// 最大値を取得
auto max_iterator = std::max_element(vec.begin(), vec.end());
int max_val = *iterator;

// 最小値を取得
auto min_iterator = std::max_element(vec.begin(), vec.end());
int min_val = *iterator;

最後に

競プロ初心者なので改善点や間違っている点などございましたら、ご教示いただけますと幸いです。
元々Pythonでやってましたが、c++だとなかなか難しいものですね。。。

0
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?