1个回答
展开全部
可以定义一个num来标记已赋值的数量,这个办法可能不太好。建议在需要知道是否已满时检查一遍,单次检查也就是n的复杂的。实际上判断数组是否全赋值没有太大的实用意义,所以我也不清楚是否有对应的方法。如果片要这么做的话我可能会用一个bitset去一对一的记录是否赋值,bitset具有不需要检查一遍就判断当中是否有1。即定义一个登长的bitset,赋值第4位则bitset第四位变为1(bitset初值为0),最后用bitset的内置方法判断是否还有0。暂时只能想到这样的处理办法。
更多追问追答
追问
我只需要对数组最后一项进行检查就好,我是依次赋值的,就看啥时候赋满,我好进行下一步操作。你说的bitset是怎么用
追答
依次赋值的话就不用那么麻烦,直接检查最后一个就行了。
bitset的话他是一种和数组差不多的类型,但是每一个里面非0即1,也就是说之占1位。同时内部方法采用位运算。优点是占用内存极小且运算即快,当需要对什么东西做标记时可以采用bitset。
举一个极端例子(可能不恰当但是助于理解),从10亿个int当中检查是否有重复的数。此时直接检查内存直接爆炸,不能一次性读入内存进行多次硬盘读写速度很慢。可以定义一个2的32次方长度的bitset,每长度只占1位,所以可以内存一次性维护。大概1G多(估了一下,不对请指正)。初始全为0,读到的5,则讲第5位置为1,若已为1,则有重复数。
当然bitset不止用于处理极端情况,速度快,内存小在算法上的用途也很广泛。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询