28 #ifndef SHARK_LINALG_BLAS_VECTOR_HPP 29 #define SHARK_LINALG_BLAS_VECTOR_HPP 32 #include <boost/container/vector.hpp> 33 #include <boost/serialization/array.hpp> 34 #include <boost/serialization/nvp.hpp> 35 #include <boost/serialization/collection_size_type.hpp> 54 typedef boost::container::vector<T> array_type;
57 typedef typename array_type::size_type size_type;
58 typedef typename array_type::difference_type difference_type;
59 typedef typename array_type::value_type value_type;
60 typedef value_type scalar_type;
66 typedef std::size_t index_type;
72 typedef self_type vector_temporary_type;
94 vector(
const array_type& data):m_storage(data) {}
111 :m_storage(e().
size()) {
121 return m_storage.size();
128 return size()?&m_storage[0]:0;
135 return size()?&m_storage[0]:0;
154 return m_storage.max_size();
160 return m_storage.size() == 0;
166 m_storage.resize(size);
218 m_storage.push_back(element);
223 std::fill(m_storage.begin(), m_storage.end(), value_type());
235 m_storage = v.m_storage;
255 self_type temporary(e);
256 swap(*
this,temporary);
261 typedef dense_storage_iterator<value_type>
iterator;
280 const_iterator
end()
const {
295 iterator
set_element(iterator pos, index_type index, value_type value) {
297 (*this)(index) = value;
304 v(pos.index()) = value_type();
312 std::fill(start,end,value_type());
322 v1.m_storage.swap(v2.m_storage);
331 template<
class Archive>
332 void serialize(Archive &ar,
const unsigned int file_version) {
333 boost::serialization::collection_size_type count(
size());
335 if(!Archive::is_saving::value){
339 ar & boost::serialization::make_array(
storage(),
size());
344 array_type m_storage;
348 struct vector_temporary_type<T,dense_random_access_iterator_tag>{
357 struct const_expression<
vector<T> const>{