00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00016
00017 #include <stxxl/random_shuffle>
00018
00019
00020 template <typename type>
00021 struct counter
00022 {
00023 type value;
00024 counter(type v = type(0)) : value(v) { }
00025 type operator () ()
00026 {
00027 type old_val = value;
00028 value++;
00029 return old_val;
00030 }
00031 };
00032
00033
00034 int main()
00035 {
00036 typedef stxxl::vector<int> ext_vec_type;
00037 ext_vec_type STXXLVector(1024 * 1024 * 256 / sizeof(int));
00038
00039 STXXL_MSG("Filling vector with increasing values...");
00040 stxxl::generate(STXXLVector.begin(), STXXLVector.end(),
00041 counter<stxxl::uint64>(), 4);
00042
00043 stxxl::uint64 i;
00044
00045 STXXL_MSG("Begin: ");
00046 for (i = 0; i < 10; i++)
00047 STXXL_MSG(STXXLVector[i]);
00048
00049 STXXL_MSG("End: ");
00050 for (i = STXXLVector.size() - 10; i < STXXLVector.size(); i++)
00051 STXXL_MSG(STXXLVector[i]);
00052
00053 STXXL_MSG("Permute randomly...");
00054 stxxl::random_shuffle(STXXLVector.begin(), STXXLVector.end(), 1024 * 1024 * 128);
00055
00056
00057 STXXL_MSG("Begin: ");
00058 for (i = 0; i < 10; i++)
00059 STXXL_MSG(STXXLVector[i]);
00060
00061 STXXL_MSG("End: ");
00062 for (i = STXXLVector.size() - 10; i < STXXLVector.size(); i++)
00063 STXXL_MSG(STXXLVector[i]);
00064 }