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++/ビット/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 に答える