首页 文章

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

提问于
浏览
1

我试图使用一个使用深度为3的嵌套向量的类成员:

vector <vector <vector>> 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 回答

  • 4

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

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

  • 0

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

    也许尝试清除最低级别的向量并按照自己的方式进行备份?

相关问题