亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? vector.hpp

?? 一個gps小工具包
?? HPP
字號:
#pragma ident "$Id: Vector.hpp 166 2006-09-30 08:33:51Z architest $"/** * @file Vector.hpp * Classes for Vector, both constant and modifiable */#ifndef GPSTK_VECTOR_HPP#define GPSTK_VECTOR_HPP//============================================================================////  This file is part of GPSTk, the GPS Toolkit.////  The GPSTk is free software; you can redistribute it and/or modify//  it under the terms of the GNU Lesser General Public License as published//  by the Free Software Foundation; either version 2.1 of the License, or//  any later version.////  The GPSTk is distributed in the hope that it will be useful,//  but WITHOUT ANY WARRANTY; without even the implied warranty of//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the//  GNU Lesser General Public License for more details.////  You should have received a copy of the GNU Lesser General Public//  License along with GPSTk; if not, write to the Free Software Foundation,//  Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA//  //  Copyright 2004, The University of Texas at Austin////============================================================================#include "VectorBase.hpp"namespace gpstk{ /** @addtogroup VectorGroup */   //@{// forward declaration   template <class T> class VectorSlice;/** * This class pretty much duplicates std::valarray<T> except it's fully * STL container compliant.  Remember that operators +=, -=, *= and /= * are provided by RefVectorBase. *  * @sa matvectest.cpp for examples */   template <class T>   class Vector : public RefVectorBase<T, Vector<T> >   {   public:         /// STL value type      typedef T value_type;         /// STL reference type      typedef T& reference;         /// STL const reference type      typedef const T& const_reference;         /// STL iterator type      typedef T* iterator;         /// STL const iterator type      typedef const T* const_iterator;         /// Default constructor      Vector() : v(NULL), s(0) {}         /// Constructor given an initial size.      Vector(size_t siz) : s(siz)            //: v(new T[siz]), s(siz)         {            v = new T[siz];            if(!v) {               VectorException e("Vector(size_t) failed to allocate");               GPSTK_THROW(e);            }         }         /**          * Constructor given an initial size and default value for all elements.          */      Vector(size_t siz, const T defaultValue) : s(siz)            //: v(new T[siz]), s(siz)         {            v = new T[siz];            if(!v) {               VectorException e("Vector<T>(size_t, const T) failed to allocate");               GPSTK_THROW(e);            }            assignFrom(defaultValue);         }         /**          * Copy constructor from a ConstVectorBase type.          */      template <class E>      Vector(const ConstVectorBase<T, E>& r) : s(r.size())            //: v(new T[r.size()]), s(r.size())         {            v = new T[r.size()];            if(!v) {               VectorException e("Vector<T>(ConstVectorBase) failed to allocate");               GPSTK_THROW(e);            }            assignFrom(r);         }         /**          * Copy constructor.          */      Vector(const Vector& r) : s(r.s)            //: v(new T[r.s]), s(r.s)         {            v = new T[r.s];            if(!v) {               VectorException e("Vector(Vector) failed to allocate");               GPSTK_THROW(e);            }            assignFrom(r);         }         /**          * Valarray constructor          */      Vector(const std::valarray<T>& r) : s(r.size())            //: v(new T[r.size()]), s(r.size())         {            v = new T[r.size()];            if(!v) {               VectorException e("Vector(valarray) failed to allocate");               GPSTK_THROW(e);            }            assignFrom(r);         }         /// subvector constructor      template <class E>      Vector(const ConstVectorBase<T, E>& vec,             size_t top,             size_t num) : v(size_t(0)),s(0)         {               // sanity checks...            if ( top >= vec.size() ||                  top + num > vec.size())            {               VectorException e("Invalid dimensions or size for Vector(VectorBase)");               GPSTK_THROW(e);            }                     v = new T[num];            if(!v) {               VectorException e("Vector(subvector) failed to allocate");               GPSTK_THROW(e);            }            size_t i;            for(i = 0; i < num; i++)               v[i] = vec(top+i);            s = num;         }            /// Destructor      ~Vector()         { if (v) delete [] v; }         /// STL iterator begin      iterator begin() { return v; }         /// STL const iterator begin      const_iterator begin() const { return v; }         /// STL iterator end      iterator end() { return v + s; }         /// STL const iterator end      const_iterator end() const { return v + s; }         /// STL front      value_type front() { return v[s-1]; }         /// STL const front      const_reference front() const { return v[s-1];}         /// STL empty      bool empty() const { return size == 0; }         /// STL size      size_t size() const {return s; }         /// STL max_size      size_t max_size() const { return std::numeric_limits<size_t>().max(); }         /// Non-const operator []      T& operator[] (size_t i)          { return v[i]; }         /// Const operator []      T operator[] (size_t i) const         { return v[i]; }         /// Non-const operator ()      T& operator() (size_t i)          { return v[i]; }         /// Const operator ()      T operator() (size_t i) const         { return v[i]; }         /// Like valarray, lets you do vec[slice] to get a VectorSlice.      VectorSlice<T> operator[] (const std::slice& sli)         { return VectorSlice<T>(*this, sli); }         /// *this will be resized if it isn't as large as x.      Vector& operator=(const Vector& x)         { resize(x.s); return assignFrom(x); }         /// *this will be resized if it isn't as large as x.      template <class E>      Vector& operator=(const ConstVectorBase<T, E>& x)         { resize(x.size()); return assignFrom(x); }         /// *this will be resized if it isn't as large as x.      Vector& operator=(const std::valarray<T>& x)         { resize(x.size()); return assignFrom(x); }         /// Only (*this).size() elements will be assigned.      Vector& operator=(const T x)         { return assignFrom(x); }         /// Only (*this).size() elements will be assigned.      Vector& operator=(const T* x)         { return assignFrom(x); }      /// *this will be cleared and resized as necessary      inline Vector& operator=(const std::vector<T>& x)      {          size_t i;          size_t vs = x.size();          (*this).resize(vs);          for (i = 0; i < vs; i++)               (*this)[i] = x[i];          return (*this);       }         /// Resizes the vector.  if index > size, the vector will be         /// erased and the contents destroyed.      Vector& resize(const size_t index)         {             if (index > s)            {               if (v)                  delete [] v;               v = new T[index];               if(!v) {                  VectorException e("Vector.resize(size_t) failed to allocate");                  GPSTK_THROW(e);               }            }            s = index;            return *this;         }         /// resize with new default value      Vector& resize(const size_t index, const T defaultValue)         {            resize(index);            size_t i;            for(i = 0; i < s; i++)               v[i] = defaultValue;            return *this;         }    /// Returns the concatenation of this Vector and Vector b    inline Vector operator&&(const Vector &b)     {        size_t i;        size_t vs = this->size();        size_t bs = b.size();        size_t rows = vs + bs;        Vector<T> toReturn(rows);        for (i = 0; i < vs; i++)            toReturn[i] = (*this)[i];        for (i = 0; i < bs; i++)            toReturn[i+vs] = b[i];        return toReturn;    }    /// Returns the concatenation of this Vector and a scalar of type T    inline Vector operator&&(const T &b)     {        size_t i;        size_t vs = this->size();        size_t rows = vs + 1;        Vector<T> toReturn(rows);        for (i = 0; i < vs; i++)            toReturn[i] = (*this)[i];        toReturn[rows - 1] = b;        return toReturn;    }   private:         // a good optimizer will remove this function call         // if RANGECHECK isn't defined.  remember that         // range checking affects EVERY operation      inline bool rangeCheck(const size_t index) const         {#ifdef RANGECHECK            return (index < s);#else            return true;#endif         }            /// The vector      T* v;         /// The size of the vector.      size_t s;   };   // end class Vector<T>/** * A slice of Vector<T> that can be modified.   * @warning Remember that (VectorSlice = VectorSlice) will * assign elements to the VectorSlice, not copy the VectorSlice internal data! */   template <class T>   class VectorSlice : public RefVectorSliceBase<T, VectorSlice<T> >   {   public:         /// Default constructor      VectorSlice()            : v(NULL), s(std::slice(0,0,0))         { }         /// Makes a slice of the whole vector      VectorSlice(Vector<T>& vv)            : v(&vv), s(std::slice(0,vv.size(),1))         { }                     /// Makes a slice of the vector with the given std::slice.      VectorSlice(Vector<T>& vv, const std::slice& ss)            : v(&vv), s(ss)         { vecSliceCheck(vv.size()); }         /// Assign the elements of this slice from another vector.      template <class V>      VectorSlice& operator=(const ConstVectorBase<T, V>& x)         { return assignFrom(x); }         /// Assign the elements of this slice from a valarray.      VectorSlice& operator=(const std::valarray<T>& x)         { return assignFrom(x); }         /// Assign all the elements of this slice to x.      VectorSlice& operator=(const T x)         { return assignFrom(x); }         /// Assign (*this).size() elements from x to (*this).      VectorSlice& operator=(const T* x)         { return assignFrom(x); }         /// Returns the modifiable i'th element of the slice.      T& operator[] (size_t i)          { return (*v)[start() + i * stride()]; }         /// Returns the const i'th element of the slice.      T operator[] (size_t i) const         { return (*v)[start() + i * stride()]; }         /// Returns the modifiable i'th element of the slice.      T& operator() (size_t i)          { return (*v)[start() + i * stride()]; }         /// Returns the const i'th element of the slice.      T operator() (size_t i) const         { return (*v)[start() + i * stride()]; }         /// returns the number of elements in the slice      inline size_t size() const { return s.size(); }         /// returns the index in the vector of the first element.      inline size_t start() const { return s.start(); }         /// returns the number of elements to skip between (*this)[i] and          /// (*this)[i+1]      inline size_t stride() const { return s.stride(); }   private:         /// the vector used as a source for the slice      Vector<T>* v;         /// the slice specification.      std::slice s;   };/** * A Vector<T> slice that doesn't allow modification.  */   template <class T>   class ConstVectorSlice : public ConstVectorSliceBase<T, ConstVectorSlice<T> >   {   public:         /// default constructor      ConstVectorSlice()            : v(NULL), s(std::slice(0,0,0))         { }         /// Makes a slice of the whole vector      ConstVectorSlice(const Vector<T>& vv)            : v(&vv), s(std::slice(0,vv.size(),1))         { }                     /// Uses the given slice and vector.      ConstVectorSlice(const Vector<T>& vv, const std::slice& ss)            : v(&vv), s(ss)         { vecSliceCheck(vv.size()); }         /// Returns a const version of the i'th slice element.      T operator[] (size_t i) const         { return (*v)[start() + i * stride()]; }         /// Returns a const version of the i'th slice element.      T operator() (size_t i) const         { return (*v)[start() + i * stride()]; }         /// returns the number of elements in the slice      inline size_t size() const { return s.size(); }         /// returns the index in the vector of the first element.      inline size_t start() const { return s.start(); }         /// returns the number of elements to skip between (*this)[i] and          /// (*this)[i+1]      inline size_t stride() const { return s.stride(); }   private:         /// Vectortor used as a source for this slice.      const Vector<T>* v;         /// the slice specification.      std::slice s;   };   //@}}  // namespace#include "VectorOperators.hpp"#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人国产精品免费观看视频| 亚洲精品视频一区| 色噜噜狠狠一区二区三区果冻| 日韩精品在线一区| 蜜乳av一区二区三区| 日韩欧美在线网站| 久久国产精品色| 久久综合狠狠综合久久综合88| 国产一区二区毛片| 国产色综合久久| 高清不卡一二三区| 亚洲欧洲国产专区| 在线免费观看不卡av| 亚洲自拍偷拍网站| 777色狠狠一区二区三区| 午夜影视日本亚洲欧洲精品| 欧美色综合影院| 奇米综合一区二区三区精品视频| 91精品久久久久久蜜臀| 奇米色一区二区| 精品欧美一区二区在线观看| 精品一区二区久久久| 日韩欧美国产三级电影视频| 精品中文字幕一区二区小辣椒 | 日韩专区欧美专区| 欧美浪妇xxxx高跟鞋交| 日韩精品电影在线观看| 欧美va亚洲va在线观看蝴蝶网| 久久爱www久久做| 欧美经典三级视频一区二区三区| 国产成人午夜视频| 亚洲精品成人天堂一二三| 一本色道久久加勒比精品| 亚洲电影一区二区| 91麻豆精品国产自产在线 | 亚洲第一狼人社区| 欧美一区二区三区婷婷月色| 韩日av一区二区| 久久天天做天天爱综合色| 夫妻av一区二区| 亚洲图片欧美一区| 欧美电影免费提供在线观看| 成人av在线播放网站| 夜夜精品视频一区二区| 日韩一区二区在线播放| 成人国产精品免费观看| 亚洲一区二区欧美日韩| 久久网站热最新地址| 色偷偷成人一区二区三区91| 久久精品国产亚洲一区二区三区| 国产精品三级在线观看| 88在线观看91蜜桃国自产| 国产高清一区日本| 婷婷国产v国产偷v亚洲高清| 国产性做久久久久久| 日韩欧美国产一区二区在线播放 | 欧美午夜在线一二页| 久久成人免费日本黄色| 亚洲日本va午夜在线影院| 91在线观看高清| 蜜臂av日日欢夜夜爽一区| 国产精品三级电影| 91精品久久久久久久久99蜜臂| 韩国精品久久久| 一区二区久久久| 久久综合精品国产一区二区三区 | 精品一二三四区| 亚洲一区二区三区四区中文字幕| 久久久高清一区二区三区| 67194成人在线观看| 91在线观看视频| 国产高清不卡二三区| 日本色综合中文字幕| 亚洲另类一区二区| 久久精品亚洲麻豆av一区二区| 在线播放欧美女士性生活| 色婷婷国产精品综合在线观看| 国产精品亚洲综合一区在线观看| 日韩中文字幕91| 亚洲综合激情网| 亚洲欧美日韩久久精品| 久久久91精品国产一区二区精品| 777午夜精品免费视频| 欧美视频精品在线观看| 91在线国产观看| 夫妻av一区二区| 成人美女视频在线观看| 国产一区二区三区最好精华液| 麻豆精品在线视频| 日韩影院免费视频| 亚洲va韩国va欧美va| 国产亚洲一区二区在线观看| 91麻豆精品91久久久久久清纯| 欧美性一级生活| 欧美精品丝袜中出| 欧美日韩小视频| 久久嫩草精品久久久精品一| 日韩一级大片在线| 欧美电影免费观看高清完整版| 欧美一区二区不卡视频| 5月丁香婷婷综合| 日韩免费高清视频| 精品久久久久久久人人人人传媒 | 一区二区三区在线视频观看58| 亚洲欧洲美洲综合色网| 亚洲日本韩国一区| 亚洲影院在线观看| 国产精品国产三级国产普通话99| 亚洲欧美在线高清| 一区二区三区欧美亚洲| 亚洲第四色夜色| 日本va欧美va瓶| 国产一区啦啦啦在线观看| 国产精品一区在线| 不卡电影免费在线播放一区| 99久久久久久| 欧美这里有精品| 欧美一区二区三区思思人| 日韩你懂的电影在线观看| 国产亚洲欧美在线| 中文字幕在线免费不卡| 一区二区三区精品视频在线| 日本成人中文字幕在线视频 | 紧缚奴在线一区二区三区| 紧缚捆绑精品一区二区| 不卡av免费在线观看| 在线观看视频一区二区| 欧美精品亚洲二区| 国产欧美1区2区3区| 中文一区在线播放| 亚洲电影在线播放| 国产·精品毛片| 欧美优质美女网站| 日韩一区二区三区视频在线观看| 制服丝袜av成人在线看| 日韩一级黄色大片| 国产丝袜美腿一区二区三区| 久久国内精品视频| 日韩高清不卡在线| 国产激情视频一区二区三区欧美| 99久久99久久精品免费观看| 3d动漫精品啪啪一区二区竹菊| 久久久99久久精品欧美| 中文字幕一区二区三| 麻豆国产91在线播放| 一本色道a无线码一区v| 欧美电视剧免费全集观看| 国产精品伦一区二区三级视频| 日本午夜一本久久久综合| 美女视频一区二区三区| 91网址在线看| 精品福利视频一区二区三区| 亚洲一区在线免费观看| 国产河南妇女毛片精品久久久| 欧美日韩国产精品成人| 亚洲欧洲无码一区二区三区| 久久99精品视频| 99久久国产免费看| 91麻豆精品国产自产在线观看一区 | 成人黄色片在线观看| 一本一本久久a久久精品综合麻豆| 色综合久久中文字幕| 精品国产91乱码一区二区三区 | 日韩亚洲欧美在线观看| 中文字幕亚洲区| 国产一区二区在线视频| 欧美精品在线一区二区三区| 亚洲猫色日本管| 久久国产综合精品| 欧美三级电影网| 精品国产91乱码一区二区三区| 午夜视频一区二区三区| 国产剧情一区在线| 日韩一区二区三区高清免费看看| 亚洲午夜羞羞片| 一本久道中文字幕精品亚洲嫩| 国产欧美一区二区精品性色超碰| 看国产成人h片视频| 欧美一卡在线观看| 日韩专区在线视频| 欧美日韩国产综合视频在线观看| 亚洲一区二区三区中文字幕| 欧美熟乱第一页| 中文字幕在线不卡| 99久久久久久| 亚洲日本va午夜在线影院| jizzjizzjizz欧美| 中文字幕第一区综合| 国产成人精品免费| 国产日韩精品一区二区三区在线| 国产在线视视频有精品| 精品少妇一区二区三区在线视频| 美女免费视频一区二区| 欧美成人免费网站| 国产乱理伦片在线观看夜一区| 精品成人a区在线观看| 国产成人啪午夜精品网站男同| 欧美老年两性高潮| 精品一区二区三区免费播放| 久久香蕉国产线看观看99|