0

http://www.cplusplus.com/reference/vector/vector/operator=/によると、ベクトルの割り当てに「=」演算子を使用できることを理解しています。しかし、次のコードを実行すると、エラーが発生します。何が問題になっていますか?

コード:

 void checkFunction(map<string, vector<string> > foo){
     vector<string> bar;     
     bar = foo.find("ABC");
     }

エラー :

error: no match for ‘operator=’ in ‘bar = foo.std::map<_Key, _Tp, _Compare, _Alloc>::find [with _Key = std::basic_string<char>, _Tp = std::vector<std::basic_string<char> >, _Compare = std::less<std::basic_string<char> >, _Alloc = std::allocator<std::pair<const std::basic_string<char>, std::vector<std::basic_string<char> > > >, std::map<_Key, _Tp, _Compare, _Alloc>::iterator = std::_Rb_tree_iterator<std::pair<const std::basic_string<char>, std::vector<std::basic_string<char> > > >, key_type = std::basic_string<char>](((const std::map<std::basic_string<char>, std::vector<std::basic_string<char> > >::key_type&)(& std::basic_string<char>(((const char*)"PAR"), ((const std::allocator<char>&)((const std::allocator<char>*)(& std::allocator<char>())))))))’

std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(const std::vector<_Tp, _Alloc>&) [with _Tp = std::basic_string<char>, _Alloc = std::allocator<std::basic_string<char> >]
std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(std::vector<_Tp, _Alloc>&&) [with _Tp = std::basic_string<char>, _Alloc = std::allocator<std::basic_string<char> >, std::vector<_Tp, _Alloc> = std::vector<std::basic_string<char> >]
std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(std::initializer_list<_CharT>) [with _Tp = std::basic_string<char>, _Alloc = std::allocator<std::basic_string<char> >, std::vector<_Tp, _Alloc> = std::vector<std::basic_string<char> >]
4

1 に答える 1

4

このmap::findメソッドは、検索する要素を指すイテレータを返します(std::pairキーasfirstと値asを含むに格納されますsecond)。

イテレータが指すベクトルにアクセスするには、それを逆参照してsecond、ペアの要素をフェッチする必要があります。

void checkFunction(map<string, vector<string> > foo){
    typedef map<string, vector<string> > map_t;

    map_t::const_iterator i = foo.find("ABC");
    if (i == foo.end()) {
        // element not found!
    }

    vector<string> bar(i->second);
}
于 2012-12-13T11:05:08.023 に答える