предупреждение о std :: vector конструктор - PullRequest
1 голос
/ 27 ноября 2011

Я пытаюсь выяснить, что делает этот кусок кода:

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

'строки' и 'столбцы' являются целыми числами.

Он вызывает конструктор, но я не уверен как. Это пример кода, который я получил из какого-то проекта ...

Это также дает мне следующее предупреждение:

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>          ]

Может ли кто-нибудь помочь?

1 Ответ

7 голосов
/ 27 ноября 2011

Создает "двумерный" вектор.Он имеет rows количество строк, а каждая строка имеет cols количество столбцов, и каждая ячейка инициализируется как false (0).

Конструктор vector, который он используетэто тот, который принимает количество элементов, которые он должен иметь изначально, а также какое значение инициализировать каждый элемент.Таким образом, visited изначально имеет rows элементов, и каждый из них инициализируется с помощью std::vector<bool>(cols, 0), который изначально имеет cols количество элементов, и каждый из них инициализируется с помощью 0 (что является false).

Он дает вам это предупреждение, потому что он преобразует 0, целое число, в false, bool.Вы можете исправить это, заменив 0 на false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...