Changeset 2719 in Sophya


Ignore:
Timestamp:
May 13, 2005, 6:44:31 PM (20 years ago)
Author:
cmv
Message:

remplissage STL vector / TVector cmv 13/05/05

Location:
trunk/SophyaLib/TArray
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/TArray/tvector.cc

    r2615 r2719  
    1 // $Id: tvector.cc,v 1.17 2004-09-10 09:55:07 cmv Exp $
     1// $Id: tvector.cc,v 1.18 2005-05-13 16:44:30 cmv Exp $
    22//                         C.Magneville          04/99
    33#include "sopnamsp.h"
     
    101101}
    102102
    103 
    104103//! Constructor of a vector from a TArray \b a
    105104/*!
     
    132131    throw SzMismatchError("TVector<T>::TVector(const BaseArray& a) NRows()!=1 && NCols()!=1 ");
    133132  arrtype_ = 2;   // Type = Vector
     133}
     134
     135//! Constructor from a STL vector
     136template <class T>
     137TVector<T>::TVector(const vector<T>& v, short lcv)
     138{
     139 sa_size_t n = v.size();
     140 if(n==0)
     141    throw SzMismatchError("TVector<T>::TVector(const vector<T>& v) size()==0 ");
     142 arrtype_ = 2;   // Type = Vector
     143 ReSize(n,lcv,false);
     144 for(sa_size_t i=0;i<n;i++) (*this)(i) = v[i];
    134145}
    135146
     
    206217  return(rs); 
    207218
     219}
     220
     221//! Fill from a STL vector
     222/*!
     223  \param v : STL vector to copy
     224  \param noresize : "true" means TVector keeps its size
     225  \warning Filling is always done starting at TVector(0)
     226 */
     227template <class T>
     228sa_size_t TVector<T>::FillFr(const vector<T>& v,bool noresize)
     229{
     230 sa_size_t n = v.size();
     231 if(n==0) return 0; //STL vector de taille nulle!
     232 if(!noresize) ReSize(n,SameVectorType,false);
     233 if(Size()<n) n = Size();
     234 if(n==0) return 0; //TVector de taille nulle sans resize!
     235 for(sa_size_t i=0;i<n;i++) (*this)(i) = v[i];
     236 return n;
     237}
     238
     239//! Fill a STL vector
     240/*!
     241  \param v : STL vector to fill
     242  \param addtoend : "true" means TVector will be added at the end of "v"
     243 */
     244template <class T>
     245sa_size_t TVector<T>::FillTo(vector<T>& v,bool addtoend)
     246{
     247 sa_size_t n = Size();
     248 if(n==0) return 0; //TVector de taille nulle!
     249 if(!addtoend) v.resize(0);
     250 for(sa_size_t i=0;i<n;i++) v.push_back((*this)(i));
     251 return n;
    208252}
    209253
  • trunk/SophyaLib/TArray/tvector.h

    r2575 r2719  
    2020  TVector(const TArray<T>& a,  bool share, short lcv=AutoVectorType, short mm=AutoMemoryMapping);
    2121  TVector(const BaseArray& a);
     22  TVector(const vector<T>& v, short lcv=AutoVectorType);
    2223
    2324  virtual ~TVector();
     
    4445              { ReSize(n, lcv, fzero); }
    4546  void Realloc(sa_size_t n, short lcv=SameVectorType, bool force=false);
     47   
     48  // Remplissage from/to a STL vector
     49  sa_size_t FillFr(const vector<T>& v,bool noresize=false);
     50  sa_size_t FillTo(vector<T>& v,bool addtoend=false);
    4651
    4752  // Sub-Vector extraction $CHECK$ Reza 03/2000  Doit-on declarer cette methode const ?
Note: See TracChangeset for help on using the changeset viewer.