У меня есть структура данных следующим образом
typedef vector<double> v_t;
typedef set<int> s_t;
typedef map<s_t, v_t> m_t;
Допустим, карта m1
имеет следующие значения:
< <1>,<1,1,1,1> >
< <2>,<2,2,2,2> >
< <3>,<3,3,3,3> >
< <4>,<4,4,4,4> >
и у меня есть отдельный вектор v1
, который имеет значения типа
<1,3,4>
Теперь я хочу добавить векторы к первому, третьему и четвертому векторам на карте, и результат должен быть сохранен в новой карте, скажем mtot
как
< <1,3,4>,<8,8,8,8> >
Вот моя следующая попытка, которая приводит к ошибке сегментации:
Любая помощь, улучшение или даже ваша идея реализации очень ценится.
s_t stemp,stemp1;
v_t vtot(4); //I know the size
typedef v_t::iterator v_it;
typedef m_t::iterator m_it;
// Assume I've v1 and m1 in hand
for(v_it it(v1.begin());it != v1.end();++it)
{
stemp1.insert(stemp1.end(),*it);
m_it mit = m1.find(stemp1);
copy(mit->second.begin(),mit->second.end(),ostream_iterator<int>(cout," ")); cout << endl; // Debug not working. There is some problem with the iterator I guess
transform(mit->second.begin(),mit->second.end(),vtot.begin(),vtot.begin(),plus<double>());
stemp1.clear();
}
stemp.insert(v1.begin(),v1.end());
mtot.insert(mtot.end(),make_pair(stemp,vtot));
}
Спасибо.