地図

2012-02-01 23 views
1

私は、次の地図

std::map <int, std::vector<std::vector<double> > > mapof2Dvectors; 

std::vector<std::vector<double> > temp; 
for(int u=0; u<size1; u++){ 
    temp.push_back(std::vector<double>()); 
    temp[u].push_back(somedoublehere); 
} 
mapof2Dvectors[key].push_back(temp); 

私は「エラーでコンパイルしようとすると、それは失敗やろうとしています:セマンティック問題:CONST VALUE_TYPE」へのノー実行可能な変換 『のstd ::ベクトル>』を'(別名' const std :: vector> ') "

何か助けが大歓迎です。

答えて

3

一部のtypedefを使用することをおすすめしますか?エラーは実際には非常に簡単です。

typedef std::vector<double> Vectors1d; 
typedef std::vector<VectorOfDoubles> Vectors2d; 
typedef std::map<int, Vectors2d> MapOf2dVectors; 

は今、あなたはこれを行うにしようとしている:

MapOf2dVectors mapof2Dvectors; 
Vector2d temp; 
mapOf2dVectors[key].push_back(temp); 

これは、問題を発見に役立ちますか? Vectors2d :: push_backがVectors1dオブジェクトを必要とするとき、基本的にはVectors2dをVectors2dオブジェクトにpush_backしようとしています。

mapOf2dVectors[key] = temp; 

以上の速度::

mapOf2dVectors[key].swap(temp); 

あなたのエラーの簡単なアナロジーはこのようなものです:

vector<int> v1; 
vector<int> v2; 
v1.push_back(v2); // error, push_back accepts only a single integer here 

だから私はわからないんだけど何それはあなたの種類に応じて、このする必要がありますあなたは後ですが、これはおそらく次のいずれかになります:

v1.insert(v1.end(), v2.begin(), v2.end()); 

または

v1 = v2;