У меня есть карта вектораC++ получить вектор из карты векторов
map< int, vector<float> > hit = getAlignedHits();
Я хочу, чтобы получить вектор в паре с определенным ключом, такие как:
vector<float> vec;
vec = hit[1];
Погрешность I получаете:
candidate function not viable: no known conversion from
vector<float, allocator<float>>
toconst vector<double, allocator<double>>
for 1st argumentvector& operator=(const vector& __x);
Я попытался ниже, не получилось:
&vec = hit[1];
error: expression is not assignable
Я также попытался ниже, не получилось:
map< int, vector<float> >::iterator itr;
itr = hit.find(1);
&vec = itr->second;
error: expression is not assignable
Кто-нибудь знает, почему это не работает, и как я могу получить вектор с карты?
спасибо заранее
Edit: Вот что getAlignedHits делает и переменные я там:
const int NLayer = 6;, vector<float> *hit_position; double alignmentpar[NLayer];
map< int, vector<float> > getAlignedHits(){
double newpos;
for (int i=0; i<NLayer; i++) {
vector<float> bla;
bla.clear();
hit[i] = bla;
}
for (unsigned int ihit=0; ihit<layerID->size(); ihit++) {
newpos = hit_position->at(ihit) - alignmentpar[layerID->at(ihit)];
hit[layerID->at(ihit)].push_back(newpos);
}
}
не должны 'VEC - itr-> второй,' работу? также кажется, что ошибка указывает на то, что вы вызываете некоторый метод 'const', кроме того, вы всегда должны сравнивать итератор, возвращаемый с' find' с 'end()' карты: 'if (itr! = hit.end()) vec = itr-> second; ' – EdChum
Я считаю, что есть что-то еще, что вы не показываете нам, что вызывает эту ошибку. Это кажется прекрасным. – DimChtz
@EdChum посмотрите на свои сообщения об ошибках, код примера не соответствует этой ошибке. Ошибка говорит, что вы делаете 'vector vec; map > hit; vec = hit [1]; ' –
PeterT