質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1222閲覧

vectorのsort

sukiyaki

総合スコア15

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2017/06/28 16:06

###前提・実現したいこと
1 2 3
4 5 6
7 8 9
・・・

上のような3列に並んだデータで3列目(例では3,6,9のある列)の最小値(例では3)を探しその1,2列目の値(例では1,2)を出力するプログラムを書きたいです.

###発生している問題・エラーメッセージ
現状としては3列目の最小値はわかるのですが,そのときの1列目と2列目を出力する方法がわかりません.

###該当のソースコード
3列目の要素を成分に持つvector vを定義して
sort(v.begin(),v.end())
で要素のソートを行い,v[0]を出力することで,3列目の最小値を求めています.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

vectorをソートするのではなく、std::min_elementを用いて最小値のイテレータを取得し、
std::distanceを用いれば最小値の添え字を獲得できます。

C++

1auto minIt = std::min_element(vec3.begin(), vec3.end()); 2int suffix = std::distance(vec3.begin(), minIt);

後は簡単ですね?
こちらが非常に参考になります。

投稿2017/06/28 16:30

LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LouiS0616

2017/06/29 03:02

なぜ低評価がついているのだろう...?
sukiyaki

2017/06/29 04:52

回答ありがとうございます.おかげで解決しました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問