- 数组存放在栈区,vector容器存放在堆区
- 定长容量较小时使用数组,此时数组性能较好,变长容量较大或则不确定容量时使用容器
- 常常习惯用迭代器来访问vector而非下标,但是当vector为二维时最好用下标来访问,因为这样可以自由的访问每个元素,而迭代器只能一行一行的访问。比如牛客的这道题:显然用下标访问效率更高
当时用迭代器写的程序如下:
1 class Solution { 2 public: 3 bool Find(int target, vector<vector<int> > array) { 4 for(auto vec_out:array){ 5 auto begin=vec_out.begin(),end=vec_out.end(),mid=begin+(end-begin)/2; 6 while(mid!=end && target!=*mid){ 7 if(target<*mid) 8 end=mid; 9 else 10 begin=mid+1; 11 mid=begin+(end-begin)/2; 12 } 13 if(mid!=end&&target==*mid) return true; 14 } 15 return false; 16 } 17 };
当使用下标访问如下:
1 bool Find(int target, vector<vector<int> > array) 2 { 3 if(array.empty()||array[0].empty()) return false; 4 int row=0,col=array[0].size()-1,array_size=array.size(); 5 while (row<array_size&&col>=0) 6 { 7 if(target<array[row][col]) --col; 8 else if(target>array[row][col]) ++row; 9 else return true; 10 } 11 return false; 12 }