multi_array/test/resize.cpp
Ronald Garcia 0de8b74284 Added support for default constructed multi_arrays:
- default public constructor for multi_array
- default protected constructors for multi_array_ref and const_multi_*
- fixed a bug in index_range regarding degenerate dimiensions.
- Added tests to resize.cpp and constructors.cpp.


[SVN r18111]
2003-03-27 20:12:32 +00:00

76 lines
1.1 KiB
C++

//
// resize.cpp - Test of resizing multi_arrays
//
#include "boost/multi_array.hpp"
#include <iostream>
using namespace std;
template <typename Array>
void print(std::ostream& os, const Array& A)
{
typename Array::const_iterator i;
os << "[";
for (i = A.begin(); i != A.end(); ++i) {
print(os, *i);
if (boost::next(i) != A.end())
os << ',';
}
os << "]";
}
void print(std::ostream& os, const int& x)
{
os << x;
}
int main() {
typedef boost::multi_array<int,3> marray;
int A_data[] = {
0,1,2,3,
4,5,6,7,
8,9,10,11,
12,13,14,15,
16,17,18,19,
20,21,22,23
};
marray A(boost::extents[2][3][4]);
A.assign(A_data,A_data+(2*3*4));
A.resize(boost::extents[4][3][2]);
int A_resize[] = {
0,1,
4,5,
8,9,
12,13,
16,17,
20,21,
0,0,
0,0,
0,0,
0,0,
0,0,
0,0
};
assert(std::equal(A_resize,A_resize+(4*3*2),A.data()));
{
marray defaultA;
defaultA.resize(boost::extents[2][3][4]);
assert(std::accumulate(defaultA.data(),defaultA.data()+(2*3*4),0) == 0);
}
}