• 数组存放在栈区,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     }

 

posted on 2023-05-04 19:57  小凉拖  阅读(24)  评论(0编辑  收藏  举报