📌  相关文章
📜  教资会网络 | UGC NET CS 2015 年 6 月 – III |问题 15(1)

📅  最后修改于: 2023-12-03 14:54:49.220000             🧑  作者: Mango

UGC NET CS 2015 年 6 月 – III 问题 15

题目描述

下面关于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_boundupper_bound 函数来查找 vector 中的元素。这两个函数都需要一个已排序的序列,所以我们首先将元素插入 vector。

lower_bound 函数在序列中查找第一个不小于指定元素的位置,而 upper_bound 函数在序列中查找第一个大于指定元素的位置。

在上面的程序中,我们查找了第一个大于 25 的元素,以及第一个大于 30 的元素。因为序列已经按照升序排列,所以 lowup 分别为 20 和 30。

最后,我们输出 lowup 的值,结果为 "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;
}