再写一个右边界

补全 right_bound:和左边界只差一个方向——相等时记下来之后往右缩。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

数出它出现了几次

补全 count_of:用左右边界数出目标出现的次数,不存在返回 0。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

lower_bound 返回什么

第 1 步:有序数组里有三个 17 第 2 步:这三格就是要数的 第 3 步:lower_bound 停在这里 第 4 步:upper_bound 停在它后面 第 5 步:两个位置一减:5 - 2 13 15 17 17 17 23 24

开始练习 →

两个函数一减得到什么

upper_bound(…, x) - lower_bound(…, x) 算出来的是【0】。

开始练习 →

迭代器怎么变成下标

要把 lower_bound 返回的迭代器 it 变成下标,写法是【0】。

开始练习 →

lower_bound 停在几号

运行下面这段程序: #include <iostream> #include <string> #include <vector> using namespace std; #include <al

开始练习 →

upper_bound 停在几号

运行下面这段程序: #include <iostream> #include <string> #include <vector> using namespace std; #include <al

开始练习 →

用两个函数数出现次数

补全 count_std:用 upper_bound 减 lower_bound 求 x 出现的次数。补全后数 17。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

第一个不小于 20 的在哪

补全 first_ge:返回第一个 ≥ x 的下标。20 不在数组里,看看它会停在哪。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

用 binary_search 判存在

补全 has:用 binary_search 判断 x 在不在。分别查 23 和 20,用 / 隔开输出。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →