我有一个由具有以下类型定义的地图组成的向量:
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 本身是一个整数向量。
在稍后阶段,我想提取内部向量并与我拥有的另一个向量进行比较。我的印象是我可以轻松地使用==
两个向量之间的运算符进行比较。但我在这样做时遇到了一些麻烦。
我试过了:
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â