使用深度为3或更大的嵌套向量进行编译器警告

时间:2009-10-17 19:25:53

标签: c++ stl vector compiler-warnings

我正在尝试使用使用深度为3的嵌套向量的类成员:

矢量<矢量<矢量> > classVariable _;

然而,当我尝试做一些像classVariable_.clear()这样简单的事情时,我会在整个代码中收到编译器警告:

/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c ++ / bits / stl_vector.h:在成员函数`std :: vector< _Tp,_Alloc>& std :: vector< _Tp,_Alloc> :: operator =(const std :: vector< _Tp,_Alloc>&)[with _Tp = std :: vector>,_ Alloc = std :: allocator> >]': /usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_vector.h:715:警告:'__result'可能在此函数中未初始化 /usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_uninitialized.h:82:警告:'__cur'可能在此函数中未初始化 /usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_uninitialized.h:82:警告:'__cur'可能在此函数中未初始化使用

奇怪的是,这适用于深度为2的嵌套向量,但深度为3或更高。这与stl库中缺少默认运算符/构造函数有关吗?

有没有人知道围绕这个的清洁解决方案?我正在使用cygwin编译它,但这不会对此产生影响。

谢谢。

2 个答案:

答案 0 :(得分:4)

如果你的意思是vector< vector< vector< int> > > classVariable_,那么classVariable_.clear()就不会产生任何警告。可能是this bug

手动禁用警告,或避免深度为3的嵌套向量,无论如何这可能都不是一个好主意。

答案 1 :(得分:0)

如果它们只是警告我不认为它可以是任何重要的,但警告是_result并且_cur没有被初始化。

也许尝试清除最低级别的向量并按照自己的方式重新启动?