aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/StdVector
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2009-04-21 21:40:33 +0000
committerGravatar Gael Guennebaud <g.gael@free.fr>2009-04-21 21:40:33 +0000
commit6f6b5ad016da39207f88d6f255c7c5ca2787bcae (patch)
tree9f75ac375427227dfb6210a2116e202207d5db00 /Eigen/StdVector
parent2697877fac022bd4a1188a355bb4a9e2598713a8 (diff)
add a generic version of std::vector::resize for other stl
implementations
Diffstat (limited to 'Eigen/StdVector')
-rw-r--r--Eigen/StdVector11
1 files changed, 10 insertions, 1 deletions
diff --git a/Eigen/StdVector b/Eigen/StdVector
index 46f927ee4..6d629061f 100644
--- a/Eigen/StdVector
+++ b/Eigen/StdVector
@@ -120,8 +120,17 @@ class vector<T,Eigen::aligned_allocator<T> >
else
vector_base::insert(vector_base::end(), new_size - vector_base::size(), x);
}
-#else
+#elif defined(_GLIBCXX_VECTOR)
using vector_base::resize;
+#else
+ // default implementation which should always work.
+ void resize(size_type new_size, const value_type& x)
+ {
+ if (new_size < vector_base::size())
+ vector_base::erase(vector_base::begin() + new_size, vector_base::end());
+ else if (new_size > vector_base::size())
+ vector_base::insert(vector_base::end(), new_size - vector_base::size(), x);
+ }
#endif
};