|
|
|
@ -106,9 +106,11 @@ class Vector {
|
|
|
|
// std::vector iterator methods. Based on CPU data access method
|
|
|
|
// std::vector iterator methods. Based on CPU data access method
|
|
|
|
size_t size() const { return size_; }
|
|
|
|
size_t size() const { return size_; }
|
|
|
|
|
|
|
|
|
|
|
|
T* begin() { return &this->operator[](0); }
|
|
|
|
T* begin() { return capacity() == 0 ? &EmptyDummy() : &this->operator[](0); }
|
|
|
|
|
|
|
|
|
|
|
|
T* end() { return &this->operator[](size()); }
|
|
|
|
T* end() {
|
|
|
|
|
|
|
|
return capacity() == 0 ? &EmptyDummy() : &this->operator[](size());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
T& front() { return *begin(); }
|
|
|
|
T& front() { return *begin(); }
|
|
|
|
|
|
|
|
|
|
|
|
@ -118,8 +120,13 @@ class Vector {
|
|
|
|
return *it;
|
|
|
|
return *it;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const T* begin() const { return &this->operator[](0); }
|
|
|
|
const T* begin() const {
|
|
|
|
const T* end() const { return &this->operator[](size()); }
|
|
|
|
return capacity() == 0 ? &EmptyDummy() : &this->operator[](0);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const T* end() const {
|
|
|
|
|
|
|
|
return capacity() == 0 ? &EmptyDummy() : &this->operator[](size());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const T* cbegin() const { return begin(); }
|
|
|
|
const T* cbegin() const { return begin(); }
|
|
|
|
|
|
|
|
|
|
|
|
@ -358,6 +365,11 @@ class Vector {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static T& EmptyDummy() {
|
|
|
|
|
|
|
|
static T dummy = T();
|
|
|
|
|
|
|
|
return dummy;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
mutable int flag_;
|
|
|
|
mutable int flag_;
|
|
|
|
mutable Tensor cpu_vec_;
|
|
|
|
mutable Tensor cpu_vec_;
|
|
|
|
mutable Tensor cuda_vec_;
|
|
|
|
mutable Tensor cuda_vec_;
|
|
|
|
|