You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中如何让迭代器指向vector内大于等于目标值的元素

实现方案

你已经完成了vector的升序排序,这种场景下直接使用C++ STL提供的lower_bound算法是最便捷的方案,不用手动遍历整个vector做判断。

方法说明

lower_bound定义在<algorithm>头文件中,针对有序的升序区间,会返回第一个大于等于目标值的迭代器,查找过程时间复杂度为O(log n),比全量遍历的*O(n)*效率更高。
你只需要从lower_bound返回的迭代器位置开始,遍历到vector末尾,就能得到所有符合要求的元素。

完整代码示例

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> v = {7, 4, 5, 10, 13};
    int target = 6;
    // 排序vector
    std::sort(v.begin(), v.end());
    // 定位第一个大于等于target的元素位置
    auto start_it = std::lower_bound(v.begin(), v.end(), target);
    // 输出符合要求的元素
    std::cout << "[";
    for (auto it = start_it; it != v.end(); ++it) {
        if (it != start_it) {
            std::cout << ",";
        }
        std::cout << *it;
    }
    std::cout << "]" << std::endl;
    return 0;
}

运行代码后输出结果为:[7,10,13],和需求完全匹配。

拓展说明

如果你后续需要筛选所有大于目标值的元素,把lower_bound替换为upper_bound即可。

内容的提问来源于stack exchange,提问作者Chandan Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:24:03