C++で書かれたコード
環境:Microsoft Visual Studio
マップのベクトルがあります。まず、最初のマップを反復処理し、その「最初の」と「2番目の」を取得して、作成した他の構造(ベクトルのマップ)に保存します。次に、「マップのベクトル」の左側のマップを繰り返し処理して、同じことを行います...
これが私のマップのベクトルです:
typedef vector<map<string,unsigned int>> myvec;
そして、これがその仕事をするべき関数です:
void Coogle::make_index(const myvec& the_vec)
{
//SCAN THE FIRST MAP
map<string,unsigned int>::iterator map_iter;
index::iterator idx_iter = the_index.begin();
for(map_iter=the_vec[0].begin(); map_iter!=the_vec[0].end(); ++map_iter)
{
}
}
'for'ループは、ベクトルの最初のマップを反復処理する必要があります。マップを反復処理する必要があるため、マップイテレータを宣言しました。右?なぜ機能しないのですか?
エラー:
IntelliSense:これらのオペランドに一致する演算子"="はありません
どうもありがとう !!!
OK、このイテレータを特定しました。
index::iterator idx_iter = the_index.begin();
そして、これが私の「インデックス」です:
typedef map<string,vector<unsigned int>> index;
そして、前述の「for」ループ内で、次のことを行いました。
for(map_iter=the_vec[0].begin(); map_iter!=the_vec[0].end(); ++map_iter)
{
/*#1*/ idx_iter->first = map_iter->first;
/*#2*/ idx_iter->second[0] = map_iter->second;
/*#3*/ idx_iter++;
}
#2は大丈夫のようです。しかし、#1はエラーを生成します:
IntelliSense:これらのオペランドに一致する演算子"="はありません
以前と同じエラーなので、似たような問題だと思います。それは...ですか?
編集:より明確にするために、私がやりたいのは、const myvec&the_vecからインデックスの「i」の場所(この場合は「0」)に追加することです。
また :
typedef vector<map<string,unsigned int>> myvec;
typedef map<string,vector<unsigned int>> index;
ありがとうございました!