Имам разреден вектор от тип std::vector<SparseElement<T,I>>
, където SparseElement е:
template<typename T, typename I = unsigned int>
struct SparseElement
{
I index;
T value;
//............
SparseElement &operator=(const std::pair<I,T> &pair);
}
Тъй като използвам за попълване на разредения вектор a std::map<I,T>
, който има като елементи std::pair<I,T>
, искам решение за това, без да променям членовете 'index' и 'value' на SparseElement:
std::pair<I,T> a;
SparseElement<T,I> b;
b = a; // This is OK!
a = b; // Is there a solution on this problem?
// on containers:
std::vector<SparseElement<T,I>> vec;
std::map<I,T> m(vec.begin(), vec.end()); // Not working.
vec.assign(m.begin(), m.end()); // Working.
a = b;
може биtemplate<class I, class T> std::pair<I,T>& operator=(pair<I,T> lhs, SparseElement<T, I> const & SE);
като безплатна функция. - person RedX   schedule 21.03.2013operator=
трябва да бъде нестатична функция член, дефинирана от стандарта. - person Kiril Kirov   schedule 21.03.2013operator std::pair<I,T>()
преобразуващ член към вашия клас SparseElement. - person RedX   schedule 21.03.2013