次の型定義を持つマップで構成されるベクトルがあります。
std::map< int, std::vector<int> >
したがって、ベクトル自体の定義は次のとおりです。
std::vector< std::map< int, std::vector<int> > >
ここで、整数のベクトルを作成し、整数キーを使用してマップに挿入し、マップ自体を外側のベクトルに追加しています。
std::map<int, std::vector<int> > vDescriptorAtom;
vDescriptorAtom.insert( std::make_pair(498, vListOfIds) );
messageDescriptorVector.push_back( vDescriptorAtom );
vListOfIds 自体は整数のベクトルです。
後の段階で、内側のベクトルを抽出し、所有している別のベクトルと比較したいと考えています。2 つのベクトル間の演算子を簡単に使用==
して比較できるという印象を受けました。しかし、私はこれを行うのに問題があります。
私は試した:
for ( int i = 0 ; i <= messageDescriptorVector.size(); i++ )
{
if ( current_tag_stack == (messageDescriptorVector.at(i))->second )
{
vFoundMatchingDescriptor = true;
break;
}
}
current_tag_stack には次の定義があることに注意してください。
std::vector<int> current_tag_stack;
しかし、私はこのエラーが発生しています:
base operand of â->â has non-pointer type âstd::map<int, std::vector<int, std::allocator<int> >, std::less<int>, std::allocator<std::pair<const int, std::vector<int, std::allocator<int> > > > >â
私は何を間違っていますか?
編集
コメントで示唆されているように、マップ内に保存したベクトルにアクセスしようとしましたが、次のmessageDescriptorVector.at(i).second
エラーが発生しています:âclass std::map<int, std::vector<int, std::allocator<int> >, std::less<int>, std::allocator<std::pair<const int, std::vector<int, std::allocator<int> > > > >â has no member named âsecondâ