ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Вопрос 2.3. Структуры хранения матриц специального вида.
template <class ValType> class TVector { protected: ValType *pVector; int Size; // размер вектора int Startlndex; // индекс первого элемента вектора public: TVector(int s=10, int si=0); // (#01) TVector(const TVector &v); // конструктор копирования (#J11) -TVector(); // (#02) int GetSize() { return Size; } // размер вектора (#0) int GetStartIndex() { return Startlndex; } // индекс первого элемента (#0) ValType & GetValue (int pos); // доступ с контролем индекса(#Г1) ValType & operator[] (int pos); // доступ (#П2) mt operator==(const TVector &v); // сравнение (#ПЗ) TVector & operator= (const TVector &v); 11 присванивание (#03) // скалярные операции TVector operator+ (const ValType &val); // прибавить скаляр (#Л2) TVector operator- (const ValType &val); // вычесть скаляр (#C1) TVector operator* (const ValType &val); // умножить на скаляр (#C2) // векторные операции TVector operator+ (const TVector &v); // сложение (#C3) TVector operator- (const TVector &v); // вычитание (#C4! TVector operator* (const TVector &v); // скалярное произведение (#C5) // ввод-вывод friend istream & operator»! istream Sin, TVector &v) { (#П4) for (int i=0; i < v.Size; i++) in» v.pVector[ i ]; // SKIP_0N return in; // SKIP_0FF } friend ostream & operator<<(ostream &out, const TVector &v) { (#C6) for (int i=0; i < v.Size; i++) out «v.pVector[i] «* '; // SKIP_0N return out; // SKIP_0FF } }; // Верхние треугольные матрицы template <class ValType> class TMatrix: public TVector<TVector<ValType> > { public: TMatrix(int s=10); // (#01) TMatrix(const TMatrix &mt); // копирование (#Л1) TMatrix(const TVector<TVector<ValType> > &mt); // преобразование типа (#Л2 TMatrix & operator== (const TMatrix &mt); // сравнение (#П1) TMatrix & operator= (const TMatrix &mt); // присваивание (#02) TMatrix operators- (const TMatrix &mt); // сложение (#П2) TMatrix operator- (const TMatrix &mt); // вычитание (#C1) TMatrix operator* (const TMatrix &mt); // умножение (#C2) // ввод / вывод friend istream & operator>>(istream &in, TMatrix &mt) { //(#ПЗ) for (int i=0; Kmt.Size; i++) // SKIP_0N in» mt.pVector[i]; П SKIP_0FF return in; } friend ostream & operator<<(ostream &out, const TMatrix &mt) { //(#C3) for (int i=0; i<mt.Size; i++) // SKIP_0N out «mt.pVector[i] «endl; // SKIP_0FF return out; } }; Не нашли, что искали? Воспользуйтесь поиском:
|