Новое на C++, меня попросили сделать функцию в моем классе Matrix
, который возвращает ссылку на значение в месте (i,j)
.Возвращение ссылки элемента std :: list из его итератора
В рамках задания, класс проводит array
из std::list
для представления матрицы:
list <value_type> * m_val;
что не имеет особого смысла, но хорошо, что это назначение. Мне сказали, чтобы начать работать с этим:
template <class E>
inline E& Matrix<E>::operator() (unsigned i, unsigned j) {
}
Это то, что я пробовал:
template <class E>
inline E& Matrix<E>::operator() (unsigned i, unsigned j) {
list<value_type> row = m_val[i]; // Get the row
typename list<E>::iterator it = row.begin(); // Iterator at beginning of row
for (int x = 0; x < j; ++x) {
++it; // For each column, I increase the iterator until I reach the desired spot
}
return *it; // I'm confused here. I got my iterator in the right spot, but I am not sure how to return a reference to its value.
}
Но, насколько я могу судить, это возвращает значение, а не ссылка. То, что я хочу достичь, по существу
myMatrix(2,3) = 50; // Now the value at 2,3 is 50.
Почему вам нужно * определить * шаблоны? Вам нужно только * использовать * стандартные контейнеры шаблонов .... –
Вы хотите вернуть ссылку на целое число? – 2013-05-14 00:47:55
@BasileStarynkevitch: Я думаю, класс Matrix должен содержать любую ценность. Извините, я не думаю, что полностью понимаю, что вы имели в виду. – Voldemort