我喜欢std::algorithm
尽可能在普通数组上使用。现在我有2个疑问;假设我想使用std::lower_bound
如果我作为参数提供的值没有找到会发生什么?
int a[] = {1,2,3,4,5,6};
int* f = std::lower_bound(a,a+6,20);
打印 *f 时的结果是 20。
如果我使用std::find
.
int a[] = {1,2,3,4,5,6};
int* f = std::find(a,a+6,20);
打印 *f 时的结果是 20。
- 当找不到返回值时,是否总是返回值是原始参数?
- 在性能方面表现
std::lower_bound
更好,std::find
因为它实现了二进制搜索算法。如果数组很大,比如最多 10 个元素,std::find 性能会更好吗?在幕后 std::lower_bound 调用 std::advance 和 std::distance ..也许我也可以节省这些调用?
非常感谢
AFG