繁体   English   中英

std :: vector中没有名为iterator_category的类型

[英]No type named iterator_category in std::vector

这段代码给出了一个错误:

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

我试图定义一个二维布尔数组,默认情况下所有元素都为false。

错误是

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

该错误指向stl_iterator_base_types.h的 第165

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值的向量。

暂无
暂无

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

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