// vector.cc is a test program for vector.h. In turn, // vector.h implements // the most important parts of the STL vector<> template. -bds 9/06 #include #include "vector.h" template void show(vector v) { std::cout << "v.size() " << v.size() << std::endl; std::cout << "v.capacity() " << v.capacity() << std::endl; std::cout << "v header is at " << &v << std::endl; std::cout << "v data begins at " << v.begin() << std::endl; typename vector::iterator p; for (p = v.begin(); p != v.end(); ++p) std::cout << *p << ", "; std::cout << "// "; for ( ; p < v.begin()+v.capacity(); ++p) std::cout << *p << ", "; std::cout << std::endl; std::cout.flush(); } main() // check things { vector a; std::cout << std::endl << "initial a" << std::endl; show(a); a.resize(1); a[0] = 1; std::cout << std::endl << "a after a.resize(1); a[0] = 1;" << std::endl; show(a); a.resize(6); a[1] = a[0] + 2; a[3] = 5; a[5] = 11; std::cout << std::endl << "a after " << "a.resize(6); a[1] = a[0] + 2; a[3] = 5; a[5] = 11;" << std::endl; show(a); typedef vector vec; typedef vec::iterator pointer; vec b(3); std::cout << std::endl << "initial b(3)" << std::endl; show(b); for (pointer p = b.begin(); p != b.end(); ++p) { int i = p-b.begin(); std::cout << "i " << i << std::endl; b[i] = i + 1.0/(i+1); } std::cout << std::endl << "b after for (pointer p = b.begin(); p != b.end(); ++p) " << "{ int i = p-b.begin(); b[i] = i + 1.0/(i+1);" << std::endl; show(b); b.resize(1); std::cout << std::endl << "b after b.resize(1)" << std::endl; show(b); b.resize(2); std::cout << std::endl << "b after b.resize(2)" << std::endl; show(b); b.resize(7); std::cout << std::endl << "b after b.resize(7)" << std::endl; show(b); b.resize(101); std::cout << std::endl << "b after b.resize(101)" << std::endl; show(b); }