1 // This file is part of the ustl library, an STL implementation.
3 // Copyright (C) 2005 by Mike Sharov <msharov@users.sourceforge.net>
4 // This file is free software, distributed under the MIT License.
9 void PrintBlock (const cmemlink
& l
)
11 const int* numbers
= reinterpret_cast<const int*>(l
.begin());
12 const size_t nNumbers
= l
.size() / sizeof(int);
13 for (size_t i
= 0; i
< nNumbers
; ++ i
)
14 cout
<< numbers
[i
] << ' ';
18 void TestObjectVector (void)
21 const size_t nNumbers
= 1000;
22 int numbers
[nNumbers
];
23 const size_t nLinks
= 10;
24 cmemlink links
[nLinks
];
25 for (size_t i
= 0; i
< nNumbers
; ++ i
)
28 for (size_t l
= 0; l
< nLinks
; ++ l
) {
29 links
[l
].link (numbers
+ offset
, l
* sizeof(int));
31 v
.push_back (memblock(links
[l
]));
33 cout
.format ("---\nvector<memblock> of %zu elements:\n---\n", v
.size());
34 for_each (v
.begin(), v
.end(), &PrintBlock
);
35 cout
.format ("---\nsize() = %zu, max_size() = ", v
.size());
36 if (v
.max_size() == SIZE_MAX
/ sizeof(memblock
))
37 cout
<< "SIZE_MAX/elsize";
40 static const char tf
[2][6]={"false","true"};
41 cout
.format (", empty() = %s\n", tf
[v
.empty()]);
42 v
.push_back (memblock(5));
43 cout
.format ("back()->size() = %zu\n", v
.back().size());
45 cout
.format ("back()->size() = %zu\n", v
.back().size());
47 PrintBlock (v
.back());
48 vector
<memblock
> cache
;
49 cache
.assign (v
.begin(), v
.end());
51 v
.assign (cache
.begin(), cache
.end());
52 v
.erase (v
.begin() + 5, 2);
53 v
.erase (v
.end() - 1, 1);
54 v
.erase (v
.end(), size_t(0));
55 cout
.format ("---\nvector of %zu elements backwards:\n---\n", v
.size());
56 for_each (v
.rbegin(), v
.rend(), &PrintBlock
);
60 StdBvtMain (TestObjectVector
)