C++のlower_bound関数の使い方を教えてください。
C++では、lower_bound関数は、ソートされたシーケンス内で与えられた値以上の最初の要素の位置を検索するために使用されます。その構文は以下の通りです:
template <class ForwardIterator, class T>
ForwardIterator lower_bound (ForwardIterator first, ForwardIterator last, const T& val);
firstとlastは範囲を示すイテレータであり、valは検索する値です。lower_bound関数は、val以上の最初の要素の位置を指すイテレータを返します。
下記はlower_bound関数を使用した例です:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int target = 6;
std::vector<int>::iterator it = std::lower_bound(nums.begin(), nums.end(), target);
if (it != nums.end() && *it == target) {
std::cout << "找到了目标元素:" << *it << std::endl;
} else {
std::cout << "未找到目标元素" << std::endl;
}
return 0;
}
上記の例では、私たちはnumsという順序付けられたベクトルを作成し、lower_bound関数を使用して値が6の要素を検索しました。 lower_bound関数が返すイテレータは、6以上の最初の位置を指すものであり、つまり6自体を指します。その後、イテレータが指す要素が目標値である6と等しいかどうかを判断し、等しい場合は目標要素が見つかったことを意味します。
結果は次の通りです:目標要素6を見つけました。