c++ lower_bound找不到
时间: 2023-10-29 14:32:12 浏览: 184
lower_bound是STL中的一个函数,用于在有序序列中查找第一个大于等于给定值的元素的位置。如果lower_bound找不到该元素,则返回指向序列末尾的迭代器。
如果lower_bound找不到,可能有以下几种原因:
1. 给定值比序列中的所有元素都大,因此lower_bound返回的是指向序列末尾的迭代器。
2. 序列不是有序的,导致lower_bound无法正确查找。
3. 给定值在序列中不存在,但是存在比它大的元素,因此lower_bound会返回第一个大于等于给定值的元素的位置。
如果需要查找精确匹配的元素,可以使用equal_range函数,该函数返回一个pair,其中第一个元素是第一个等于给定值的元素的位置,第二个元素是最后一个等于给定值的元素的位置的下一个位置。如果序列中不存在等于给定值的元素,则两个位置都指向序列末尾。
相关问题
c++lower_bound函数
lower_bound()函数是C++ STL标准库中的一个查找函数,它的底层实现采用的是二分查找的方式。它可以用于在已经排序的数组或容器中查找一个指定的元素。lower_bound()函数返回一个指向大于或等于指定值的第一个元素的迭代器。如果数组或容器中不存在大于或等于指定值的元素,则返回一个指向最后一个元素的迭代器。在lower_bound()函数的参数中,第一个参数是数组或容器的起始位置,第二个参数是数组或容器的结束位置,第三个参数是要查找的值。在使用lower_bound()函数之前,需要确保数组或容器已经按照从小到大的顺序进行了排序。如果数组或容器中存在多个相同的大于或等于指定值的元素,lower_bound()函数会返回其中任意一个元素的迭代器。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [C++ lower_bound()函数](https://blog.csdn.net/SYC20110120/article/details/129906737)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [C++ lower_bound() upper_bound() 函数用法详解(深入了解,一文学会)](https://blog.csdn.net/qq_37529913/article/details/125139815)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
c++ lower_bound高级用法
引用中展示了lower_bound的高级用法。lower_bound函数用于在有序序列中找到第一个大于或等于给定值的元素的位置。在上述代码中,通过自定义的mycomp2函数对象作为比较规则,我们可以将lower_bound函数用于更复杂的场景。
在代码中,首先定义了mycomp2函数对象,其重载了()运算符,在这个函数对象中输出了传入的两个参数i和j,用于展示lower_bound函数的比较过程。然后,通过调用lower_bound函数,并传入myvector.begin()和myvector.end()作为迭代器范围,3作为要查找的值,以及mycomp2()作为比较规则,即可实现根据mycomp2规则找到第一个违背规则的元素的位置。
整个过程中,lower_bound函数会根据自定义的比较规则来进行查找,并返回一个指向找到的元素的迭代器。如果找不到符合条件的元素,则返回的迭代器指向大于所有元素的位置。
因此,c++的lower_bound函数提供了灵活的高级用法,可以根据自定义的比较规则来进行查找操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [C++ lower_bound() upper_bound() 函数用法详解(深入了解,一文学会)](https://blog.csdn.net/qq_37529913/article/details/125139815)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文