9 #ifndef IMPBASE_CONVERTIBLE_VECTOR_H
10 #define IMPBASE_CONVERTIBLE_VECTOR_H
11 #include <IMP/base/base_config.h>
18 #if IMP_COMPILER_HAS_DEBUG_VECTOR && IMP_HAS_CHECKS >= IMP_INTERNAL
19 #include <debug/vector>
25 IMPBASE_BEGIN_NAMESPACE
37 #if !defined(IMP_DOXYGEN) && !defined(SWIG)
38 #if IMP_COMPILER_HAS_DEBUG_VECTOR && IMP_HAS_CHECKS >= IMP_INTERNAL
39 ,
public __gnu_debug::vector<T>
41 ,
public std::vector<T>
45 #if IMP_COMPILER_HAS_DEBUG_VECTOR && IMP_HAS_CHECKS >= IMP_INTERNAL
46 typedef __gnu_debug::vector<T> V;
48 typedef std::vector<T> V;
52 explicit Vector(
unsigned int sz,
const T&t=T()): V(sz, t){}
54 Vector(It b, It e): V(b,e){}
56 explicit Vector(
const std::vector<VO> &o): V(o.begin(), o.end()){}
63 V::insert(V::end(), o.begin(), o.end());
66 #if !defined(IMP_DOXYGEN) && !defined(SWIG)
67 void show(std::ostream &out=std::cout)
const{
69 for (
unsigned int i=0; i< V::size(); ++i) {
70 if (i >0) out <<
", ";
80 std::ostringstream oss;
84 std::size_t __hash__()
const {
85 return boost::hash_range(V::begin(),
91 #if !defined(SWIG) && !defined(IMP_DOXYGEN)
99 inline Vector<T> operator+( Vector<T> ret,
100 const Vector<T> &o) {
101 ret.insert(ret.end(), o.begin(), o.end());
107 #if IMP_COMPILER_HAS_DEBUG_VECTOR && IMP_HAS_CHECKS >= IMP_INTERNAL
109 inline std::size_t hash_value(
const __gnu_debug::vector<T> &t) {
110 return boost::hash_range(t.begin(), t.end());
114 IMPBASE_END_NAMESPACE