繁体   English   中英

在std :: vector构造函数上警告

[英]warning on std::vector constructor

我试图弄清楚这段代码的作用:

std::vector<std::vector<bool> > visited(rows, std::vector<bool>(cols, 0));

“ rows”和“ cols”都是整数。

它调用构造函数,但是我不确定如何。 这是我从某个项目获得的示例代码...

它还向我发出以下警告:

c:\program files (x86)\microsoft visual studio 10.0\vc\include\vector(2140): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\vector(2126) : see reference to function template instantiation 'void std::vector<_Ty,_Ax>::_BConstruct<_Iter>(_Iter,_Iter,std::_Int_iterator_tag)' being compiled
1>          with
1>          [
1>              _Ty=bool,
1>              _Ax=std::allocator<bool>,
1>              _Iter=int
1>          ]
1>          c:\ai challenge\code\project\project\state.cpp(85) : see reference to function template instantiation 'std::vector<_Ty,_Ax>::vector<int>(_Iter,_Iter)' being compiled
1>          with
1>          [
1>              _Ty=bool,
1>              _Ax=std::allocator<bool>,
1>              _Iter=int
1>          ]

有人可以帮忙吗?

它正在创建“二维”矢量。 它的rows数为rows数,每行的列数为cols ,并且每个单元格都初始化为false0 )。

它使用的vector的构造函数是一个使用其初始应具有的元素数量以及用来初始化每个元素的值的构造函数。 因此, visited最初具有rows元素,并且每个元素都以std::vector<bool>(cols, 0)初始化,该元素最初具有cols元素数量,并且每个元素都由0初始化(为false )。

之所以发出警告,是因为它将0 (一个整数)转换为false (一个bool 您可以通过将0替换为false来修复它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM