Ошибка, возможно, немного загадочная.Позволяет перевести это в нечто читаемое человеком.
main.cpp: In function ‘int main()’:
main.cpp:15:26: error: no matching function for call to ‘std::map<std::__cxx11::basic_string<char>, std::vector<std::__cxx11::basic_string<char> > >::find(__gnu_cxx::__alloc_traits<std::allocator<char> >::value_type&)’
if(umap.find(s[i]) != umap.end())
Первый std::__cxx11::basic_string<char>
- сложный способ обозначить std::string
.Тогда __gnu_cxx::__alloc_traits<std::allocator<char> >::value_type&
- это еще более сложный способ обозначить тип возвращаемого значения s[i]
, который на самом деле просто char&
.Сложив это вместе, мы получим
main.cpp: In function ‘int main()’:
main.cpp:15:26: error: no matching function for call to ‘std::map<std::string, std::vector<std::string> >::find(char&)’
if(umap.find(s[i]) != umap.end())
Я надеюсь, теперь вы видите, что ошибка сообщает, что нет перегрузки find
, которая бы принимала char&
в качестве параметра.
Вместо этого вы должны передать std::string
, например, через s.substr(i,1)
.