- 命名空间
C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
因为标准库非常的庞大,所以程序员在选择的类的名称或函数名时就很有可能和标准库中的某个名字相同。
所以为了避免这种情况所造成的名字冲突,就把标准库中的一切都放在名字空间std中。
namespace允许像类,对象,函数聚集在一个名字下。
本质上讲namespace是对全局作用域的细分。
但这有会带来了一个新问题。
无数原有的C++代码都依赖于使用了多年的伪标准库中的功能,他们都是在全局空间下的,所以就有了
<
i
o
s
t
r
e
a
m
>
leetcode 704 二分查找 根据右区间关闭这个特点 , [left, right ]; 所以有如下两点: 根据右区间关闭这个特点 , [left, right ); 欢迎分享,转载请注明来源:内存溢出
命名空间std封装的是标准程序库的名称,标准程序库为了和以前的头文件区别,一般都不加".h"。using namespace std;
声明类的对象Class1 Obj1; Obj1: 是类Class1的对象 , 类
1. 二分查找的前提
vector<int> data = {1,2, 3, 4, 5};
1.1 右区间关闭
1.2 右区间开, 右端点取不到
#include
有如下两点:class Solution {
public:
int search(vector<int>& nums, int target){
int left = 0;
int right = nums.size() ; // 注意,因为是右开区间, 右侧端点取不到;
while (left < right){ // 因为右侧端点取不到, 所以是 取不到等号
int middle = (left + right ) / 2;
if (nums[middle] > target){
right = middle; // 中间值 大于target, 说明区间往左移动, right 取值middle, 因为此时右端点是开区间;
}else if (nums[middle] < target){
left = middle + 1 ; // 因为 此时 nums[middle] 不是target, 且 left端点值可以取到, 所以 left = middle + 1
}else{
return middle;
}
}
return -1;
}
};
评论列表(0条)