はじめに
c++のvector配列の最大値とそのindexの出し方がすぐに思いつかなかったため、備忘録として記述。
ソースコード
iterator
iterator自体に知識がなかったのでこちらを参照しました。
- vector::iterator, array::iterator はランダム・アクセス可能
- list::iterator は両方向移動可能
- forward_list::iterator は前方向のみ移動可能
色んなiteratorの種類があるんすね。
メイン処理
max_elementで最大要素を指す最初のイテレータを取得。
その後、iterator間の距離を求めるdistanceで要素の値を取得
std::vector<int>::iterator iter = std::max_element(x.begin(), x.end());
size_t index = std::distance(x.begin(), iter);
サンプルコード
#include<iostream>
#include<vector>
#include<algorithm>
int main(){
std::vector<int> x;
for(int i=0;i<10;i++){
x.push_back(i);
}
std::vector<int>::iterator iter = std::max_element(x.begin(), x.end());
size_t index = std::distance(x.begin(), iter);
std::cout << "max element:" << x[index] << std::endl;
std::cout << "max element:" << *iter << std::endl;
return 0;
}
最後に
修士課程に進学してから、プログラミングを本格的に始めました。
というか、Quita初投稿です!訂正やこうしたらいいよなどの提案、様々なコメント待っています!!
引用
[vectorの指定したiteratorの要素番号を取得する] (https://teramonagi.hatenablog.com/entry/20130225/1361793892)