1

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

矢量<矢量<矢量>>类变量_;

但是,当我尝试执行诸如 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 编译它,但这不应该对此产生影响。

谢谢你。

4

2 回答 2

4

如果您实际上是说vector< vector< vector< int> > > classVariable_,则classVariable_.clear()不应产生任何警告。可能是这个错误

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

于 2009-10-17T19:39:25.797 回答
0

如果它们只是警告,我认为这不是什么大事,但警告是针对 _result 和 _cur 未初始化的。

也许尝试清除最低级别的向量并以您的方式备份?

于 2009-10-17T20:24:14.060 回答