我有一个矢量数组,其中填充了一些双向量值。我想打印2.0以下的所有数字。我的限制,我必须使用std::lower_bound()
。如何才能做到这一点?这是我尝试使用的最小工作代码,但它只提供单个值:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
const double data[] = { 5.3, 9.2, 7.5, 6.9, 4.5 };
const int dataCount = sizeof(data) / sizeof(data[0]);
vector<double> vec(data, data + dataCount);
sort(vec.begin(), vec.end());
auto less2 = lower_bound(vec.begin(), vec.end(), 2.0);
auto less4 = lower_bound(vec.begin(), vec.end(), 4.0);
auto less6 = lower_bound(vec.begin(), vec.end(), 6.0);
cout << "\nLess than 2.0 : " << *less2 << endl << "Less than 4.0 : " << *less4 << endl << "Less than 6.0 : " << *less6 << endl;
return 0;
}
问候。
答案 0 :(得分:1)
返回指向范围[first,last]中第一个元素的迭代器,该元素不小于(即大于或等于)value。
因此,如果要打印2.0
下面的所有元素,则需要从begin(vec)
迭代到从std::lower_bound
返回的迭代器:
auto less2 = lower_bound(vec.begin(), vec.end(), 2.0);
for(auto it = begin(vec); it != less2; ++it) cout << *it << " ";