ホームに戻る
max_element、min_element、upper_bound、lower_bound

//max_elementは要素中の最大の値へのイテレータを返す。
//最大値が複数あるときには先頭から最初の要素を返す。

vector<int>::iterator itr = max_element(v.begin(),v.end());

// itr は cout << itr << endl; とはできない。
// 必ず v.begin() などとの差をとってやる。

cout << itr - v.begin() << endl;

// 最大値の取得

int mx = *max_elemnt(v.begin(),v.end());

// lower_bound() の挙動

vector v;
v.pb(11);  // 0
v.pb(13);  // 1
v.pb(15);  // 2
v.pb(15);  // 3
v.pb(15);  // 4
v.pb(15);  // 5
v.pb(16);  // 6
v.pb(17);  // 7
sort(all(v)); // ソートを忘れずに!
for(int i = 10; i < 20; i++){
  vector<ll>::iterator itr = lower_bound(all(v),i);
  cout << i << ":" << itr - v.begin() << " " << v[itr - v.begin()] << endl;
}

// 出力
10:0 11
11:0 11
12:1 13
13:1 13
14:2 15
15:2 15
16:6 16
17:7 17
18:8 0
19:8 0

// upper_bound() の挙動

vector v;
v.pb(11);  // 0
v.pb(13);  // 1
v.pb(15);  // 2
v.pb(15);  // 3
v.pb(15);  // 4
v.pb(15);  // 5
v.pb(16);  // 6
v.pb(17);  // 7
sort(all(v)); // ソートを忘れずに!
for(int i = 10; i < 20; i++){
  vector<ll>::iterator itr = upper_bound(all(v),i);
  cout << i << ":" << itr - v.begin() << " " << v[itr - v.begin()] << endl;
}

// 出力
10:0 11
11:1 13
12:1 13
13:2 15
14:2 15
15:6 16
16:7 17
17:8 0
18:8 0
19:8 0

inserted by FC2 system