数组的第一题 剑指offer

class Solution {
public:
    bool Find(vector<vector<int> > array,int target) {
        int i = 0,j = 0;
        int len1 =sizeof(array)/sizeof(int);
        //int len2=sizeof(array[0])/sizeof(int);//长度
        //int len3 =len1/len2; //高度
        int len3 = array.size();
        int len2 = array[0].size();
        if(len3 == 0 || len2 ==0)
            return false;
        for(i = 0; i < len3;i++)
        {
         for(j = 0;j<len2;j++)
             {
                 if(target == array[i][j])
                 {
                 return true;    
                 }
             }
        }
        
        return false;
    }
};
我不知道为啥我用第一种sizeof()  长度没用size求 就会老师跳出  。。什么多种递归 数组越界之类的 能帮我看看么大家
全部评论
vector是类模板,无论怎么添加数据,对其取sizeof都是固定的,根据不同编译器对vector的实现其取值也不同,一般是一般是12或16。因为vector是对动态数组的封装,分配的是堆内存,vector内部只需要指向堆内存的迭代器、实际元素结尾迭代器、容量结尾迭代器(也可能有内存分配器)这几个成员产量,无虚函数占用内存。代码需要的是vector的元素量而不是类模板大小!平时写代码时一般是不对stl的类模板取siaeof的。
点赞 回复 分享
发布于 2016-10-21 12:43
建议你看看STL源码剖析
点赞 回复 分享
发布于 2016-10-21 12:45

相关推荐

想润的芹菜人狠话不多:把其中一个老总放中间都会得罪另一个
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务