std :: vector中没有类型命名iTerator_category

No type named iterator_category in std::vector

本文关键字:iTerator category vector std 类型      更新时间:2023-10-16

此代码正在给出一个错误:

vector<vector<bool> > revealed(vector<bool>(10, false), vector<bool>(10,false));

我正在尝试定义一个2D布尔数组,该数组默认为false。

错误是

.stl_iterator_base_types.h|165|error: no type named 'iterator_category' in 'class std::vector<bool>'|

stl_iterator_base_types.h

162 template<typename _Iterator>
163 struct iterator_traits
164 {
165     typedef typename _Iterator::iterator_category iterator_category;
166     typedef typename _Iterator::value_type        value_type;
167     typedef typename _Iterator::difference_type   difference_type;
168     typedef typename _Iterator::pointer           pointer;
169     typedef typename _Iterator::reference         reference;
170 };

顺便说一句,我正在使用code :: blocks(with mingw)作为我的IDE

您将初始化如下的向量

std::vector<std::vector<bool>> revealed(10, std::vector<bool>(10, false));

原因是您要用于std::vector的构造函数超载是

vector(size_type count, const T& value);

因此,您可以看到第一个参数是计数,第二个是值。通过这个概念,您希望外部向量为

vector(10, "vectors_of_length_10_wlth_all_false_values")
           ^

您表示第二个参数的方式是

std::vector<bool>(10, false)

外部向量的第一个参数只是10,因为您希望它包含10个具有10个false值的向量。