📅  最后修改于: 2023-12-03 14:54:49.220000             🧑  作者: Mango
下面关于C++ STL程序的输出是什么?
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
vector<int> v;
v.push_back(10);
v.push_back(20);
v.push_back(30);
v.push_back(30);
vector<int>::iterator low, up;
low = lower_bound(v.begin(), v.end(), 25);
up = upper_bound(v.begin(), v.end(), 30);
cout << *low << " " << *up << endl;
return 0;
}
(A) 30 30 (B) 20 30 (C) 30 0 (D) 30 20
(B)
这个程序中,我们使用了 <algorithm>
头文件中的 lower_bound
和 upper_bound
函数来查找 vector 中的元素。这两个函数都需要一个已排序的序列,所以我们首先将元素插入 vector。
lower_bound
函数在序列中查找第一个不小于指定元素的位置,而 upper_bound
函数在序列中查找第一个大于指定元素的位置。
在上面的程序中,我们查找了第一个大于 25 的元素,以及第一个大于 30 的元素。因为序列已经按照升序排列,所以 low
和 up
分别为 20 和 30。
最后,我们输出 low
和 up
的值,结果为 "20 30"。因此,答案为 B。
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
vector<int> v;
v.push_back(10);
v.push_back(20);
v.push_back(30);
v.push_back(30);
vector<int>::iterator low, up;
low = lower_bound(v.begin(), v.end(), 25);
up = upper_bound(v.begin(), v.end(), 30);
cout << *low << " " << *up << endl;
return 0;
}