44 using value_type = _CLASSE_;
45 using pointer_type = std::shared_ptr<_CLASSE_>;
46 using STLVect = std::vector<pointer_type>;
47 using Iterator =
typename STLVect::iterator;
48 using Const_Iterator =
typename STLVect::const_iterator;
56 explicit IteratorWrapper(Iterator it) : it_(it) { }
57 value_type& operator*() {
return *it_->get(); }
58 value_type* operator->() {
return it_->get(); }
59 IteratorWrapper& operator++() { ++it_;
return *
this; }
60 IteratorWrapper operator++(
int) {
return IteratorWrapper(it_++); }
61 bool operator==(
const IteratorWrapper& other)
const {
return it_ == other.it_; }
62 bool operator!=(
const IteratorWrapper& other)
const {
return it_ != other.it_; }
68 class ConstIteratorWrapper
71 explicit ConstIteratorWrapper(Const_Iterator it) : it_(it) {}
72 const value_type& operator*()
const {
return *it_->get(); }
73 const value_type* operator->()
const {
return it_->get(); }
74 ConstIteratorWrapper& operator++() { ++it_;
return *
this; }
75 ConstIteratorWrapper operator++(
int) {
return ConstIteratorWrapper(it_++); }
76 bool operator==(
const ConstIteratorWrapper& other)
const {
return it_ == other.it_; }
77 bool operator!=(
const ConstIteratorWrapper& other)
const {
return it_ != other.it_; }
97 template<
typename _TYPE_>
98 std::enable_if_t< !(std::is_same<_TYPE_,MD_Vector>::value),
Entree&>
105 for (
int ind = 0; ind < i; ind++)
113 template<
typename _TYPE_>
114 std::enable_if_t< !(std::is_same<_TYPE_,MD_Vector>::value),
Sortie&>
117 s << (int) z_vect_.size() << tspace;
118 for (
auto &itr : z_vect_) s << *itr << tspace;
124 template<
typename _TYPE_>
125 std::enable_if_t<(std::is_same<_TYPE_,MD_Vector>::value),
Entree&>
126 readOn_(
Entree& s) {
return s; }
128 template<
typename _TYPE_>
129 std::enable_if_t<(std::is_same<_TYPE_,MD_Vector>::value),
Sortie&>
130 printOn_(
Sortie& s)
const {
return s ; }
147 for (
int i = 0; i < avect.
size(); i++)
148 z_vect_.push_back(std::make_shared<_CLASSE_>(*avect.z_vect_[i]));
156 IteratorWrapper
begin() {
return IteratorWrapper(z_vect_.begin()); }
157 IteratorWrapper
end() {
return IteratorWrapper(z_vect_.end()); }
158 const ConstIteratorWrapper
begin()
const {
return ConstIteratorWrapper(z_vect_.begin()); }
159 const ConstIteratorWrapper
end()
const {
return ConstIteratorWrapper(z_vect_.end()); }
166 const value_type&
operator[](
int i)
const {
return *z_vect_[i]; }
172 value_type&
add() =
delete;
174 int size()
const {
return (
int)z_vect_.size(); }
178 value_type&
back() {
return *(z_vect_.back()); }
179 value_type&
front() {
return *(z_vect_.front()); }
186 const int old_size = (int)z_vect_.size();
187 if (old_size == i)
return;
191 Cerr <<
"WARNING : dimensionner method of a TRUST_Vector" << finl;
192 Cerr <<
"Old vector size : " << old_size << finl;
193 Cerr <<
"New vector size : " << i << finl;
197 for (
int j = old_size; j < i; j++)
198 z_vect_[j] = std::make_shared<_CLASSE_>();
205 for (
auto& itr : z_vect_) itr = std::make_shared<_CLASSE_>();
212 if (
this == &avect)
return *
this;
215 for (
int i = 0; i < avect.
size(); i++)
216 z_vect_.push_back(std::make_shared<_CLASSE_>(*avect.z_vect_[i]));
222 value_type&
add(value_type&& data_to_add)
224 z_vect_.emplace_back(std::make_shared<_CLASSE_>(std::forward<_CLASSE_>(data_to_add)));
225 return *(z_vect_.back());
228 value_type&
add(
const value_type& data_to_add)
230 z_vect_.push_back(std::make_shared<_CLASSE_>(data_to_add));
231 return *(z_vect_.back());
238 tmp_.reserve(v2.
size());
239 auto lambda_ = [](pointer_type
const &iter) {
return std::make_shared<_CLASSE_>(*iter); };
241 z_vect_.insert(z_vect_.end(), std::make_move_iterator(tmp_.begin()), std::make_move_iterator(tmp_.end()));