Мне нужно сгенерировать вектор векторов, начинающийся со слова.
Далее я привел минимальный пример с одной буквой (хотя позже мне следует использовать более длинные слова) того, что мне нужно сделать. К сожалению, я не понимаю, как функция «найти» должна работать для карты, и я получаю ошибку компиляции. Любая помощь, пожалуйста?
#include <string>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
vector <vector <double> > assign_mat(string &s, map<string, vector<double> > &amatr){
vector <vector <double> > res;
for(size_t i=0; i<s.size(); ++i){
res.push_back(amatr.find(s[i])->second) ;
}
return res;
}
int main(){
map<string, vector<double> > amm_vals = {
{"S", {-0.228,1.399,-4.760,0.670,-2.647} },
{"T", {-0.032,0.326,2.213,0.908,1.313} },
{"V", {-1.337,-0.279,-0.544,1.242,-1.262} }
};
string s="V";
vector <vector <double> > ares;
ares=assign_mat(s, amm_vals);
return 0;
}
Я получаю следующую ошибку:
В функции 'std::vector<std::vector<double> > assign_mat(std::__cxx11::string&, std::map<std::__cxx11::basic_string<char>, std::vector<double> >&)
':
main_code. cpp: 15: 34: ошибка: нет подходящей функции для вызова 'std::map<std::__cxx11::basic_string<char>, std::vector<double> >::find(__gnu_cxx::__alloc_traits<std::allocator<char> >::value_type&)
' res.push_back(amatr.find(s[i])->second) ;