📄 avec.hp
字号:
// This may look like C code, but it is really -*- C++ -*-/* Copyright (C) 1988 Free Software Foundation written by Doug Lea (dl@rocky.oswego.edu)This file is part of the GNU C++ Library. This library is freesoftware; you can redistribute it and/or modify it under the terms ofthe GNU Library General Public License as published by the FreeSoftware Foundation; either version 2 of the License, or (at youroption) any later version. This library is distributed in the hopethat it will be useful, but WITHOUT ANY WARRANTY; without even theimplied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULARPURPOSE. See the GNU Library General Public License for more details.You should have received a copy of the GNU Library General PublicLicense along with this library; if not, write to the Free SoftwareFoundation, 675 Mass Ave, Cambridge, MA 02139, USA.*/#ifndef _<T>AVec_h#ifdef __GNUG__#pragma interface#endif#define _<T>AVec_h 1#include "<T>.Vec.h"class <T>AVec : public <T>Vec{protected: void check_len(int l); <T>* vec(); <T>AVec(int l, <T>* d); public: <T>AVec (); <T>AVec (int l); <T>AVec (int l, <T&> fill_value); <T>AVec (<T>AVec&); ~<T>AVec (); <T>AVec& operator = (<T>AVec& a); <T>AVec& operator = (<T&> fill_value);// vector by scalar -> vector operations friend <T>AVec operator + (<T>AVec& a, <T&> b); friend <T>AVec operator - (<T>AVec& a, <T&> b); friend <T>AVec operator * (<T>AVec& a, <T&> b); friend <T>AVec operator / (<T>AVec& a, <T&> b); <T>AVec& operator += (<T&> b); <T>AVec& operator -= (<T&> b); <T>AVec& operator *= (<T&> b); <T>AVec& operator /= (<T&> b);// vector by vector -> vector operations friend <T>AVec operator + (<T>AVec& a, <T>AVec& b); friend <T>AVec operator - (<T>AVec& a, <T>AVec& b); <T>AVec& operator += (<T>AVec& b); <T>AVec& operator -= (<T>AVec& b); <T>AVec operator - (); friend <T>AVec product(<T>AVec& a, <T>AVec& b); <T>AVec& product(<T>AVec& b); friend <T>AVec quotient(<T>AVec& a, <T>AVec& b); <T>AVec& quotient(<T>AVec& b);// vector -> scalar operations friend <T> operator * (<T>AVec& a, <T>AVec& b); <T> sum(); <T> min(); <T> max(); <T> sumsq();// indexing int min_index(); int max_index();// redundant but necesssary friend <T>AVec concat(<T>AVec& a, <T>AVec& b); friend <T>AVec map(<T>Mapper f, <T>AVec& a); friend <T>AVec merge(<T>AVec& a, <T>AVec& b, <T>Comparator f); friend <T>AVec combine(<T>Combiner f, <T>AVec& a, <T>AVec& b); friend <T>AVec reverse(<T>AVec& a); <T>AVec at(int from = 0, int n = -1);};inline <T>AVec::<T>AVec() {}inline <T>AVec::<T>AVec(int l) :<T>Vec(l) {}inline <T>AVec::<T>AVec(int l, <T&> fill_value) : <T>Vec (l, fill_value) {}inline <T>AVec::<T>AVec(<T>AVec& v) :<T>Vec(v) {}inline <T>AVec::<T>AVec(int l, <T>* d) :<T>Vec(l, d) {}inline <T>AVec::~<T>AVec() {}inline <T>* <T>AVec::vec(){ return s;}inline void <T>AVec::check_len(int l){ if (l != len) error("nonconformant vectors.");}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -