栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

关于vector.size()的一个坑点

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于vector.size()的一个坑点

最近自己搞小项目搞得多,同时也在洛谷上刷题,看到了这道题:Mayan 游戏,发现是道模拟题,于是感到格外亲切。

码了码,结果在本地不停 RE ,上网一查才明白:
vector.size()是unsigned int,size()为0的时候,size()-1不是 − 1 -1 −1 而是 4294967295 4294967295 4294967295.

原来的代码:

				if(tmp.col[i+1].size()-1 >= j){
					int t = tmp.col[i][j];
					tmp.col[i][j] = tmp.col[i+1][j];
					tmp.col[i+1][j] = t;
				}

当tmp.col[i+1]这个vector里没有元素时,左边这个式子为(unsigned int) -1 = 4294967295,显然是大于右边的,于是下面本不该执行的内容被错误的执行了,导致了 R E RE RE。

遇到这种情况有两种解决办法:

  • 第一种:
    将 vector.size() 强转成int型。
    			if((int)tmp.col[i+1].size()-1 >= j){
    				int t = tmp.col[i][j];
    				tmp.col[i][j] = tmp.col[i+1][j];
    				tmp.col[i+1][j] = t;
    			}
    
  • 第二种:
    使用一个int变量去接收 vector.size() 的值。
    			int l = tmp.col[i+1].size();
    			if(l-1 >= j){
    				int t = tmp.col[i][j];
    				tmp.col[i][j] = tmp.col[i+1][j];
    				tmp.col[i+1][j] = t;
    			}
    

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/990585.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号