From ec9e8e9017dd80d8603c3f49ee73cc7a1e794be4 Mon Sep 17 00:00:00 2001 From: kronbichler Date: Tue, 8 Apr 2014 20:33:01 +0000 Subject: [PATCH] Use AlignedVector instead of std::vector as data container for TableBase. It uses more memory for Table but let's first see if everything goes smooth with this type. git-svn-id: https://svn.dealii.org/trunk@32740 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/include/deal.II/base/aligned_vector.h | 5 +- deal.II/include/deal.II/base/table.h | 324 +++++++++--------- 2 files changed, 163 insertions(+), 166 deletions(-) diff --git a/deal.II/include/deal.II/base/aligned_vector.h b/deal.II/include/deal.II/base/aligned_vector.h index 7c8241a273..c73f58f662 100644 --- a/deal.II/include/deal.II/base/aligned_vector.h +++ b/deal.II/include/deal.II/base/aligned_vector.h @@ -341,7 +341,10 @@ namespace internal if (size == 0) return; - if (std_cxx1x::is_trivial::value == true) + // do not use memset for long double because on some systems it does not + // completely fill its memory + if (std_cxx1x::is_trivial::value == true && + types_are_equal::value == false) { const unsigned char zero [sizeof(T)] = {}; // cast element to (void*) to silence compiler warning for virtual diff --git a/deal.II/include/deal.II/base/table.h b/deal.II/include/deal.II/base/table.h index 890d8d9af4..8bd939aa91 100644 --- a/deal.II/include/deal.II/base/table.h +++ b/deal.II/include/deal.II/base/table.h @@ -22,6 +22,7 @@ #include #include #include +#include #include #include @@ -86,11 +87,11 @@ namespace internal typedef const T value_type; typedef const TableBase TableType; - typedef typename std::vector::const_iterator iterator; - typedef typename std::vector::const_iterator const_iterator; + typedef typename AlignedVector::const_iterator iterator; + typedef typename AlignedVector::const_iterator const_iterator; - typedef typename std::vector::const_reference reference; - typedef typename std::vector::const_reference const_reference; + typedef typename AlignedVector::const_reference reference; + typedef typename AlignedVector::const_reference const_reference; }; /** @@ -104,11 +105,11 @@ namespace internal typedef T value_type; typedef TableBase TableType; - typedef typename std::vector::iterator iterator; - typedef typename std::vector::const_iterator const_iterator; + typedef typename AlignedVector::iterator iterator; + typedef typename AlignedVector::const_iterator const_iterator; - typedef typename std::vector::reference reference; - typedef typename std::vector::const_reference const_reference; + typedef typename AlignedVector::reference reference; + typedef typename AlignedVector::const_reference const_reference; }; @@ -648,7 +649,7 @@ public: * Return a read-write reference * to the indicated element. */ - typename std::vector::reference + typename AlignedVector::reference operator () (const TableIndices &indices); /** @@ -664,7 +665,7 @@ public: * don't know here whether * copying is expensive or not. */ - typename std::vector::const_reference + typename AlignedVector::const_reference operator () (const TableIndices &indices) const; /** @@ -712,7 +713,7 @@ protected: * used internally and in * functions already checked. */ - typename std::vector::reference el (const TableIndices &indices); + typename AlignedVector::reference el (const TableIndices &indices); /** * Return the value of the @@ -732,7 +733,7 @@ protected: * don't know here whether * copying is expensive or not. */ - typename std::vector::const_reference el (const TableIndices &indices) const; + typename AlignedVector::const_reference el (const TableIndices &indices) const; /** * @deprecated This function @@ -746,13 +747,13 @@ protected: * cast from const), otherwise, * keep away! */ - typename std::vector::const_pointer data () const DEAL_II_DEPRECATED; + typename AlignedVector::const_pointer data () const DEAL_II_DEPRECATED; protected: /** * Component-array. */ - std::vector values; + AlignedVector values; /** * Size in each direction of the @@ -869,7 +870,7 @@ public: * data element. Returns a * read-only reference. */ - typename std::vector::const_reference + typename AlignedVector::const_reference operator [] (const unsigned int i) const; /** @@ -879,7 +880,7 @@ public: * data element. Returns a * read-write reference. */ - typename std::vector::reference + typename AlignedVector::reference operator [] (const unsigned int i); /** @@ -889,7 +890,7 @@ public: * data element. Returns a * read-only reference. */ - typename std::vector::const_reference + typename AlignedVector::const_reference operator () (const unsigned int i) const; /** @@ -899,7 +900,7 @@ public: * data element. Returns a * read-write reference. */ - typename std::vector::reference + typename AlignedVector::reference operator () (const unsigned int i); /** @@ -908,7 +909,7 @@ public: * base class available also in * this class. */ - typename std::vector::reference + typename AlignedVector::reference operator () (const TableIndices<1> &indices); /** @@ -917,7 +918,7 @@ public: * base class available also in * this class. */ - typename std::vector::const_reference + typename AlignedVector::const_reference operator () (const TableIndices<1> &indices) const; }; @@ -1049,7 +1050,7 @@ public: * This version of the function * only allows read access. */ - typename std::vector::const_reference + typename AlignedVector::const_reference operator () (const unsigned int i, const unsigned int j) const; @@ -1063,7 +1064,7 @@ public: * This version of the function * allows read-write access. */ - typename std::vector::reference + typename AlignedVector::reference operator () (const unsigned int i, const unsigned int j); @@ -1073,7 +1074,7 @@ public: * base class available also in * this class. */ - typename std::vector::reference + typename AlignedVector::reference operator () (const TableIndices<2> &indices); /** @@ -1082,7 +1083,7 @@ public: * base class available also in * this class. */ - typename std::vector::const_reference + typename AlignedVector::const_reference operator () (const TableIndices<2> &indices) const; @@ -1118,8 +1119,8 @@ protected: * table classes for 2d arrays, * then called vector2d. */ - typename std::vector::reference el (const unsigned int i, - const unsigned int j); + typename AlignedVector::reference el (const unsigned int i, + const unsigned int j); /** * Return the value of the @@ -1145,8 +1146,8 @@ protected: * table classes for 2d arrays, * then called vector2d. */ - typename std::vector::const_reference el (const unsigned int i, - const unsigned int j) const; + typename AlignedVector::const_reference el (const unsigned int i, + const unsigned int j) const; }; @@ -1266,9 +1267,9 @@ public: * This version of the function * only allows read access. */ - typename std::vector::const_reference operator () (const unsigned int i, - const unsigned int j, - const unsigned int k) const; + typename AlignedVector::const_reference operator () (const unsigned int i, + const unsigned int j, + const unsigned int k) const; /** @@ -1280,9 +1281,9 @@ public: * This version of the function * allows read-write access. */ - typename std::vector::reference operator () (const unsigned int i, - const unsigned int j, - const unsigned int k); + typename AlignedVector::reference operator () (const unsigned int i, + const unsigned int j, + const unsigned int k); /** * Make the corresponding @@ -1290,7 +1291,7 @@ public: * base class available also in * this class. */ - typename std::vector::reference operator () (const TableIndices<3> &indices); + typename AlignedVector::reference operator () (const TableIndices<3> &indices); /** * Make the corresponding @@ -1298,7 +1299,7 @@ public: * base class available also in * this class. */ - typename std::vector::const_reference operator () (const TableIndices<3> &indices) const; + typename AlignedVector::const_reference operator () (const TableIndices<3> &indices) const; }; @@ -1370,10 +1371,10 @@ public: * This version of the function * only allows read access. */ - typename std::vector::const_reference operator () (const unsigned int i, - const unsigned int j, - const unsigned int k, - const unsigned int l) const; + typename AlignedVector::const_reference operator () (const unsigned int i, + const unsigned int j, + const unsigned int k, + const unsigned int l) const; /** @@ -1385,10 +1386,10 @@ public: * This version of the function * allows read-write access. */ - typename std::vector::reference operator () (const unsigned int i, - const unsigned int j, - const unsigned int k, - const unsigned int l); + typename AlignedVector::reference operator () (const unsigned int i, + const unsigned int j, + const unsigned int k, + const unsigned int l); /** * Make the corresponding @@ -1396,7 +1397,7 @@ public: * base class available also in * this class. */ - typename std::vector::reference + typename AlignedVector::reference operator () (const TableIndices<4> &indices); /** @@ -1405,7 +1406,7 @@ public: * base class available also in * this class. */ - typename std::vector::const_reference + typename AlignedVector::const_reference operator () (const TableIndices<4> &indices) const; }; @@ -1479,11 +1480,11 @@ public: * This version of the function * only allows read access. */ - typename std::vector::const_reference operator () (const unsigned int i, - const unsigned int j, - const unsigned int k, - const unsigned int l, - const unsigned int m) const; + typename AlignedVector::const_reference operator () (const unsigned int i, + const unsigned int j, + const unsigned int k, + const unsigned int l, + const unsigned int m) const; /** * Direct access to one element @@ -1494,11 +1495,11 @@ public: * This version of the function * allows read-write access. */ - typename std::vector::reference operator () (const unsigned int i, - const unsigned int j, - const unsigned int k, - const unsigned int l, - const unsigned int m); + typename AlignedVector::reference operator () (const unsigned int i, + const unsigned int j, + const unsigned int k, + const unsigned int l, + const unsigned int m); /** * Make the corresponding @@ -1506,7 +1507,7 @@ public: * base class available also in * this class. */ - typename std::vector::reference + typename AlignedVector::reference operator () (const TableIndices<5> &indices); /** @@ -1515,7 +1516,7 @@ public: * base class available also in * this class. */ - typename std::vector::const_reference + typename AlignedVector::const_reference operator () (const TableIndices<5> &indices) const; }; @@ -1590,12 +1591,12 @@ public: * This version of the function * only allows read access. */ - typename std::vector::const_reference operator () (const unsigned int i, - const unsigned int j, - const unsigned int k, - const unsigned int l, - const unsigned int m, - const unsigned int n) const; + typename AlignedVector::const_reference operator () (const unsigned int i, + const unsigned int j, + const unsigned int k, + const unsigned int l, + const unsigned int m, + const unsigned int n) const; /** * Direct access to one element @@ -1606,12 +1607,12 @@ public: * This version of the function * allows read-write access. */ - typename std::vector::reference operator () (const unsigned int i, - const unsigned int j, - const unsigned int k, - const unsigned int l, - const unsigned int m, - const unsigned int n); + typename AlignedVector::reference operator () (const unsigned int i, + const unsigned int j, + const unsigned int k, + const unsigned int l, + const unsigned int m, + const unsigned int n); /** * Make the corresponding @@ -1619,7 +1620,7 @@ public: * base class available also in * this class. */ - typename std::vector::reference + typename AlignedVector::reference operator () (const TableIndices<6> &indices); /** @@ -1628,7 +1629,7 @@ public: * base class available also in * this class. */ - typename std::vector::const_reference + typename AlignedVector::const_reference operator () (const TableIndices<6> &indices) const; }; @@ -1703,13 +1704,13 @@ public: * This version of the function * only allows read access. */ - typename std::vector::const_reference operator () (const unsigned int i, - const unsigned int j, - const unsigned int k, - const unsigned int l, - const unsigned int m, - const unsigned int n, - const unsigned int o) const; + typename AlignedVector::const_reference operator () (const unsigned int i, + const unsigned int j, + const unsigned int k, + const unsigned int l, + const unsigned int m, + const unsigned int n, + const unsigned int o) const; /** * Direct access to one element @@ -1720,13 +1721,13 @@ public: * This version of the function * allows read-write access. */ - typename std::vector::reference operator () (const unsigned int i, - const unsigned int j, - const unsigned int k, - const unsigned int l, - const unsigned int m, - const unsigned int n, - const unsigned int o); + typename AlignedVector::reference operator () (const unsigned int i, + const unsigned int j, + const unsigned int k, + const unsigned int l, + const unsigned int m, + const unsigned int n, + const unsigned int o); /** * Make the corresponding @@ -1734,7 +1735,7 @@ public: * base class available also in * this class. */ - typename std::vector::reference + typename AlignedVector::reference operator () (const TableIndices<7> &indices); /** @@ -1743,7 +1744,7 @@ public: * base class available also in * this class. */ - typename std::vector::const_reference + typename AlignedVector::const_reference operator () (const TableIndices<7> &indices) const; }; @@ -1803,8 +1804,8 @@ public: * This version of the function * only allows read access. */ - typename std::vector::const_reference operator () (const unsigned int i, - const unsigned int j) const; + typename AlignedVector::const_reference operator () (const unsigned int i, + const unsigned int j) const; /** * Direct access to one element @@ -1815,8 +1816,8 @@ public: * This version of the function * allows read-write access. */ - typename std::vector::reference operator () (const unsigned int i, - const unsigned int j); + typename AlignedVector::reference operator () (const unsigned int i, + const unsigned int j); /** * Number of rows. This function @@ -1850,7 +1851,7 @@ protected: * table classes for 2d arrays, * then called vector2d. */ - typename std::vector::reference el (const unsigned int i, + typename AlignedVector::reference el (const unsigned int i, const unsigned int j); /** @@ -1877,7 +1878,7 @@ protected: * table classes for 2d arrays, * then called vector2d. */ - typename std::vector::const_reference el (const unsigned int i, + typename AlignedVector::const_reference el (const unsigned int i, const unsigned int j) const; }; @@ -1923,7 +1924,10 @@ TableBase::TableBase (const TableBase &src) { reinit (src.table_size); if (src.n_elements() != 0) - std::copy (src.values.begin(), src.values.end(), values.begin()); + internal::AlignedVectorMove (const_cast(src.values.begin()), + const_cast(src.values.end()), + values.begin(), + true); } @@ -2114,7 +2118,10 @@ TableBase::operator = (const TableBase &m) { reinit (m.size()); if (!empty()) - std::copy (m.values.begin(), m.values.end(), values.begin()); + internal::AlignedVectorMove (const_cast(m.values.begin()), + const_cast(m.values.end()), + values.begin(), + true); return *this; } @@ -2127,7 +2134,7 @@ inline TableBase & TableBase::operator = (const TableBase &m) { - reinit (m.size()); + reinit (m.size(), true); if (!empty()) std::copy (m.values.begin(), m.values.begin() + n_elements(), values.begin()); @@ -2151,8 +2158,10 @@ inline void TableBase::reset_values () { + // use parallel set operation if (n_elements() != 0) - std::fill (values.begin(), values.end(), T()); + internal::AlignedVectorSet (values.size(), T(), + values.begin()); } @@ -2163,7 +2172,8 @@ void TableBase::fill (const T &value) { if (n_elements() != 0) - std::fill (values.begin(), values.end(), value); + internal::AlignedVectorSet (values.size(), value, + values.begin()); } @@ -2179,8 +2189,7 @@ TableBase::reinit (const TableIndices &new_sizes, const unsigned int new_size = n_elements(); - // if zero size was given: free all - // memory + // if zero size was given: free all memory if (new_size == 0) { values.resize (0); @@ -2193,27 +2202,12 @@ TableBase::reinit (const TableIndices &new_sizes, return; } - // if new size is nonzero: - // if necessary allocate - // additional memory - values.resize (new_size); - - // reinitialize contents of old or - // new memory. note that we - // actually need to do this here, - // even in the case that we - // reallocated memory, since per - // C++ standard, clause 5.3.4/15 - // the newly allocated objects are - // only default initialized by - // operator new[] if they are - // non-POD type. In other words, if - // we have a table of doubles, then - // their values after calling 'new - // double[val_size]' is - // indetermined. - if (fast == false) - reset_values (); + // if new size is nonzero: if necessary allocate additional memory, and if + // not fast resize, zero out all values) + values.resize_fast (new_size); + if (!fast) + internal::AlignedVectorSet (values.size(), T(), + values.begin()); } @@ -2317,7 +2311,7 @@ TableBase::fill (InputIterator entries, ExcMessage("Trying to fill an empty matrix.")); if (C_style_indexing) - for (typename std::vector::iterator p = values.begin(); + for (typename AlignedVector::iterator p = values.begin(); p != values.end(); ++p) *p = *entries++; else @@ -2380,7 +2374,7 @@ TableBase::position (const TableIndices &indices) const template inline -typename std::vector::const_reference +typename AlignedVector::const_reference TableBase::operator () (const TableIndices &indices) const { for (unsigned int n=0; n::operator () (const TableIndices &indices) const template inline -typename std::vector::reference +typename AlignedVector::reference TableBase::operator () (const TableIndices &indices) { for (unsigned int n=0; n::operator () (const TableIndices &indices) template inline -typename std::vector::const_reference +typename AlignedVector::const_reference TableBase::el (const TableIndices &indices) const { return values[position(indices)]; @@ -2416,7 +2410,7 @@ TableBase::el (const TableIndices &indices) const template inline -typename std::vector::reference +typename AlignedVector::reference TableBase::el (const TableIndices &indices) { Assert (position(indices) < values.size(), @@ -2428,11 +2422,11 @@ TableBase::el (const TableIndices &indices) template inline -typename std::vector::const_pointer +typename AlignedVector::const_pointer TableBase::data () const { if (values.size() == 0) - return typename std::vector::const_pointer(); + return typename AlignedVector::const_pointer(); else return &values[0]; } @@ -2472,7 +2466,7 @@ Table<1,T>::Table (const unsigned int size, template inline -typename std::vector::const_reference +typename AlignedVector::const_reference Table<1,T>::operator [] (const unsigned int i) const { Assert (i < this->table_size[0], @@ -2484,7 +2478,7 @@ Table<1,T>::operator [] (const unsigned int i) const template inline -typename std::vector::reference +typename AlignedVector::reference Table<1,T>::operator [] (const unsigned int i) { Assert (i < this->table_size[0], @@ -2496,7 +2490,7 @@ Table<1,T>::operator [] (const unsigned int i) template inline -typename std::vector::const_reference +typename AlignedVector::const_reference Table<1,T>::operator () (const unsigned int i) const { Assert (i < this->table_size[0], @@ -2508,7 +2502,7 @@ Table<1,T>::operator () (const unsigned int i) const template inline -typename std::vector::reference +typename AlignedVector::reference Table<1,T>::operator () (const unsigned int i) { Assert (i < this->table_size[0], @@ -2520,7 +2514,7 @@ Table<1,T>::operator () (const unsigned int i) template inline -typename std::vector::const_reference +typename AlignedVector::const_reference Table<1,T>::operator () (const TableIndices<1> &indices) const { return TableBase<1,T>::operator () (indices); @@ -2530,7 +2524,7 @@ Table<1,T>::operator () (const TableIndices<1> &indices) const template inline -typename std::vector::reference +typename AlignedVector::reference Table<1,T>::operator () (const TableIndices<1> &indices) { return TableBase<1,T>::operator () (indices); @@ -2611,7 +2605,7 @@ Table<2,T>::operator [] (const unsigned int i) template inline -typename std::vector::const_reference +typename AlignedVector::const_reference Table<2,T>::operator () (const unsigned int i, const unsigned int j) const { @@ -2626,7 +2620,7 @@ Table<2,T>::operator () (const unsigned int i, template inline -typename std::vector::reference +typename AlignedVector::reference Table<2,T>::operator () (const unsigned int i, const unsigned int j) { @@ -2641,7 +2635,7 @@ Table<2,T>::operator () (const unsigned int i, template inline -typename std::vector::const_reference +typename AlignedVector::const_reference Table<2,T>::operator () (const TableIndices<2> &indices) const { return TableBase<2,T>::operator () (indices); @@ -2651,7 +2645,7 @@ Table<2,T>::operator () (const TableIndices<2> &indices) const template inline -typename std::vector::reference +typename AlignedVector::reference Table<2,T>::operator () (const TableIndices<2> &indices) { return TableBase<2,T>::operator () (indices); @@ -2661,7 +2655,7 @@ Table<2,T>::operator () (const TableIndices<2> &indices) template inline -typename std::vector::const_reference +typename AlignedVector::const_reference Table<2,T>::el (const unsigned int i, const unsigned int j) const { @@ -2672,7 +2666,7 @@ Table<2,T>::el (const unsigned int i, template inline -typename std::vector::reference +typename AlignedVector::reference Table<2,T>::el (const unsigned int i, const unsigned int j) { @@ -2734,7 +2728,7 @@ TransposeTable::reinit (const unsigned int size1, template inline -typename std::vector::const_reference +typename AlignedVector::const_reference TransposeTable::operator () (const unsigned int i, const unsigned int j) const { @@ -2749,7 +2743,7 @@ TransposeTable::operator () (const unsigned int i, template inline -typename std::vector::reference +typename AlignedVector::reference TransposeTable::operator () (const unsigned int i, const unsigned int j) { @@ -2764,7 +2758,7 @@ TransposeTable::operator () (const unsigned int i, template inline -typename std::vector::const_reference +typename AlignedVector::const_reference TransposeTable::el (const unsigned int i, const unsigned int j) const { @@ -2775,7 +2769,7 @@ TransposeTable::el (const unsigned int i, template inline -typename std::vector::reference +typename AlignedVector::reference TransposeTable::el (const unsigned int i, const unsigned int j) { @@ -2875,7 +2869,7 @@ Table<3,T>::operator [] (const unsigned int i) template inline -typename std::vector::const_reference +typename AlignedVector::const_reference Table<3,T>::operator () (const unsigned int i, const unsigned int j, const unsigned int k) const @@ -2894,7 +2888,7 @@ Table<3,T>::operator () (const unsigned int i, template inline -typename std::vector::reference +typename AlignedVector::reference Table<3,T>::operator () (const unsigned int i, const unsigned int j, const unsigned int k) @@ -2913,7 +2907,7 @@ Table<3,T>::operator () (const unsigned int i, template inline -typename std::vector::const_reference +typename AlignedVector::const_reference Table<3,T>::operator () (const TableIndices<3> &indices) const { return TableBase<3,T>::operator () (indices); @@ -2923,7 +2917,7 @@ Table<3,T>::operator () (const TableIndices<3> &indices) const template inline -typename std::vector::reference +typename AlignedVector::reference Table<3,T>::operator () (const TableIndices<3> &indices) { return TableBase<3,T>::operator () (indices); @@ -2986,7 +2980,7 @@ Table<4,T>::operator [] (const unsigned int i) template inline -typename std::vector::const_reference +typename AlignedVector::const_reference Table<4,T>::operator () (const unsigned int i, const unsigned int j, const unsigned int k, @@ -3009,7 +3003,7 @@ Table<4,T>::operator () (const unsigned int i, template inline -typename std::vector::reference +typename AlignedVector::reference Table<4,T>::operator () (const unsigned int i, const unsigned int j, const unsigned int k, @@ -3032,7 +3026,7 @@ Table<4,T>::operator () (const unsigned int i, template inline -typename std::vector::const_reference +typename AlignedVector::const_reference Table<4,T>::operator () (const TableIndices<4> &indices) const { return TableBase<4,T>::operator () (indices); @@ -3042,7 +3036,7 @@ Table<4,T>::operator () (const TableIndices<4> &indices) const template inline -typename std::vector::reference +typename AlignedVector::reference Table<4,T>::operator () (const TableIndices<4> &indices) { return TableBase<4,T>::operator () (indices); @@ -3108,7 +3102,7 @@ Table<5,T>::operator [] (const unsigned int i) template inline -typename std::vector::const_reference +typename AlignedVector::const_reference Table<5,T>::operator () (const unsigned int i, const unsigned int j, const unsigned int k, @@ -3135,7 +3129,7 @@ Table<5,T>::operator () (const unsigned int i, template inline -typename std::vector::reference +typename AlignedVector::reference Table<5,T>::operator () (const unsigned int i, const unsigned int j, const unsigned int k, @@ -3162,7 +3156,7 @@ Table<5,T>::operator () (const unsigned int i, template inline -typename std::vector::const_reference +typename AlignedVector::const_reference Table<5,T>::operator () (const TableIndices<5> &indices) const { return TableBase<5,T>::operator () (indices); @@ -3172,7 +3166,7 @@ Table<5,T>::operator () (const TableIndices<5> &indices) const template inline -typename std::vector::reference +typename AlignedVector::reference Table<5,T>::operator () (const TableIndices<5> &indices) { return TableBase<5,T>::operator () (indices); @@ -3241,7 +3235,7 @@ Table<6,T>::operator [] (const unsigned int i) template inline -typename std::vector::const_reference +typename AlignedVector::const_reference Table<6,T>::operator () (const unsigned int i, const unsigned int j, const unsigned int k, @@ -3272,7 +3266,7 @@ Table<6,T>::operator () (const unsigned int i, template inline -typename std::vector::reference +typename AlignedVector::reference Table<6,T>::operator () (const unsigned int i, const unsigned int j, const unsigned int k, @@ -3303,7 +3297,7 @@ Table<6,T>::operator () (const unsigned int i, template inline -typename std::vector::const_reference +typename AlignedVector::const_reference Table<6,T>::operator () (const TableIndices<6> &indices) const { return TableBase<6,T>::operator () (indices); @@ -3313,7 +3307,7 @@ Table<6,T>::operator () (const TableIndices<6> &indices) const template inline -typename std::vector::reference +typename AlignedVector::reference Table<6,T>::operator () (const TableIndices<6> &indices) { return TableBase<6,T>::operator () (indices); @@ -3385,7 +3379,7 @@ Table<7,T>::operator [] (const unsigned int i) template inline -typename std::vector::const_reference +typename AlignedVector::const_reference Table<7,T>::operator () (const unsigned int i, const unsigned int j, const unsigned int k, @@ -3420,7 +3414,7 @@ Table<7,T>::operator () (const unsigned int i, template inline -typename std::vector::reference +typename AlignedVector::reference Table<7,T>::operator () (const unsigned int i, const unsigned int j, const unsigned int k, @@ -3455,7 +3449,7 @@ Table<7,T>::operator () (const unsigned int i, template inline -typename std::vector::const_reference +typename AlignedVector::const_reference Table<7,T>::operator () (const TableIndices<7> &indices) const { return TableBase<7,T>::operator () (indices); @@ -3465,7 +3459,7 @@ Table<7,T>::operator () (const TableIndices<7> &indices) const template inline -typename std::vector::reference +typename AlignedVector::reference Table<7,T>::operator () (const TableIndices<7> &indices) { return TableBase<7,T>::operator () (indices); -- 2.39.5