...
template<class T>
class TWowThisIsTheMatrixBreakedByNeo { // :)
...
T getValue( const int i, const int j ) const {...}
void setValue( const int i, const int j, T value ) { ... }
...
};
Двумерные массивы на С++
(матрица), как объявить operator[], чтобы он принимал два параметра и
возвращал нужный елемент?
P.S. operator[] (int,int) не катит - ... must have one parameter...
Ну это как посмотреть...
А разындексирование скольки "местная" операция?
Только учти, что даже вручную ты сначала ищешь столбец, а потом строку или наоборот, а не тыкаешь сразу в нужный элемент.
Кроме того в С++ нет операторов с неогранниченным числом аргументов, так сколько аргументов предусмотреть?
А разындексирование скольки "местная" операция?
Только учти, что даже вручную ты сначала ищешь столбец, а потом строку или наоборот, а не тыкаешь сразу в нужный элемент.
Кроме того в С++ нет операторов с неогранниченным числом аргументов, так сколько аргументов предусмотреть?[/QUOTE]
Я уже предложил выход автору темы, и вообще для математических задач - передавать вектор в качестве агрумента. Хотя было бы очень неплохо, будь у С++ возможность непосредственно в операторе указывать произвольное количество параметров. А насчет того, что нет операторов с неограниченным числом параметров... Ну, скажем, оператор () сколько параметров может иметь? Думаю, не 2-3 - побольше? Ну дык пусть столько же и у []. И насчёт того, что я "ищу" сначала столбец, потом строку, или наоборот - ты абсолютно прав; так почему же первый оператор разындексации должен получать именно строку, а не столбец? Не возникнет ли путаница у человека, который укажет один оператор разындексирования - ведь может быть, по его-то логике он должен вернуть столбец? Потому-то и предлагается выделить получение столбцов и строк в отдельные методы.
...Зашёл на сайт ISO. Не понимаю, почему ISO ПРОДАЁТ стандарт С++ ISO/IEC 14882:2003 (http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=38110&ICS1=35&ICS2=60&ICS3=&scopelist=CATALOGUE) (стоимость 352 каких-то "CHF"), а не даёт скачать его бесплатно. Это так, лирическое отступление.
Гораздо проще не придумывать всякой ерунды, не изобретать летающие утюги, а сделать по тупому. Написать два метода:
Код:
И все дела. И просто и понятно и легко понять что это и ...
Цитата:
Гораздо проще не придумывать всякой ерунды, не изобретать летающие утюги, а сделать по тупому.
Тупо - один метод возвращает значение, другой его принимает. А если в качестве T выступает структура с набором полей под сотню байт размером :eek:
Для этого используют ссылки.
Повторю свой старый код.
Код:
T& Item (int I1, int I2); // Чтение изменяемого значения
const T& Item (int I1, int I2) const; Чтение константного значения
const T& Item (int I1, int I2) const; Чтение константного значения
Хорошо, что не из Basic'a пришел нас поучать. :)
Спасибо, но мы как-нибудь по своему, а не "по тупому", т.к. привыкли к стандартному виду индексируемых контейнеров.
Кстати, а вот это const int i зачем?