C++編で扱っている C++ は 2003年に登場した C++03 という、とても古いバージョンのものです。C++ はその後、C++11 -> C++14 -> C++17 -> C++20 -> C++23 と更新されています。
なかでも C++11 での更新は非常に大きなものであり、これから C++ の学習を始めるのなら、C++11 よりも古いバージョンを対象にするべきではありません。特に事情がないなら、新しい C++ を学んでください。 当サイトでは、C++14 をベースにした新C++編を作成中です。
問題① ある範囲内に、ある値を持つ要素がいくつあるか調べるために equal_range関数を使う方法があります。このような目的を果たすプログラムを作成してください。
equal_range関数が返すイテレータのペア間の距離を調べれば、それが、一致した要素の個数です。
#include <algorithm>
#include <iostream>
#include <vector>
#include <iterator>
int main()
{
typedef std::vector<int> IntVector;
;
IntVector v.push_back(0);
v.push_back(1);
v.push_back(2);
v.push_back(2);
v.push_back(2);
v.push_back(3);
v.push_back(4);
v
typedef std::pair<IntVector::iterator, IntVector::iterator> IteratorPair;
const IteratorPair itPair = std::equal_range(v.begin(), v.end(), 2);
std::cout << std::distance(itPair.first, itPair.second) << std::endl;
}
実行結果:
3
ソート済みの範囲であれば、count関数(第19章)を使うよりも、equal_range関数を使う方が高速な可能性があります。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
![]() |
管理者情報 | プライバシーポリシー |