mirror of
https://github.com/boostorg/container.git
synced 2025-08-03 22:44:26 +02:00
Add custom random_shuffle as some old compiler implementations self-swap some elements.
This commit is contained in:
@@ -37,6 +37,19 @@ void compare_times(cpu_times time_numerator, cpu_times time_denominator){
|
||||
std::cout << "----------------------------------------------" << '\n' << std::endl;
|
||||
}
|
||||
|
||||
template< class RandomIt >
|
||||
void random_shuffle( RandomIt first, RandomIt last )
|
||||
{
|
||||
typedef typename boost::container::iterator_traits<RandomIt>::difference_type difference_type;
|
||||
difference_type n = last - first;
|
||||
for (difference_type i = n-1; i > 0; --i) {
|
||||
difference_type j = std::rand() % (i+1);
|
||||
if(j != i) {
|
||||
boost::adl_move_swap(first[i], first[j]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
boost::container::vector<int> sorted_unique_range_int;
|
||||
boost::container::vector<int> sorted_range_int;
|
||||
boost::container::vector<int> random_unique_range_int;
|
||||
@@ -57,11 +70,11 @@ void fill_range_ints()
|
||||
//random_range_int
|
||||
std::srand(0);
|
||||
random_range_int.assign(sorted_range_int.begin(), sorted_range_int.end());
|
||||
std::random_shuffle(random_range_int.begin(), random_range_int.end());
|
||||
::random_shuffle(random_range_int.begin(), random_range_int.end());
|
||||
//random_unique_range_int
|
||||
std::srand(0);
|
||||
random_unique_range_int.assign(sorted_unique_range_int.begin(), sorted_unique_range_int.end());
|
||||
std::random_shuffle(random_unique_range_int.begin(), random_unique_range_int.end());
|
||||
::random_shuffle(random_unique_range_int.begin(), random_unique_range_int.end());
|
||||
}
|
||||
|
||||
boost::container::vector<boost::container::string> sorted_unique_range_string;
|
||||
@@ -93,11 +106,11 @@ void fill_range_strings()
|
||||
//random_range_string
|
||||
std::srand(0);
|
||||
random_range_string.assign(sorted_range_string.begin(), sorted_range_string.end());
|
||||
std::random_shuffle(random_range_string.begin(), random_range_string.end());
|
||||
::random_shuffle(random_range_string.begin(), random_range_string.end());
|
||||
//random_unique_range_string
|
||||
std::srand(0);
|
||||
random_unique_range_string.assign(sorted_unique_range_string.begin(), sorted_unique_range_string.end());
|
||||
std::random_shuffle(random_unique_range_string.begin(), random_unique_range_string.end());
|
||||
::random_shuffle(random_unique_range_string.begin(), random_unique_range_string.end());
|
||||
}
|
||||
|
||||
template<class T>
|
||||
|
@@ -35,7 +35,7 @@
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
AdditionalDependencies="winmm.lib libboost_chrono-vc71-mt-gd-1_61.lib libboost_timer-vc71-mt-gd-1_61.lib libboost_system-vc71-mt-gd-1_61.lib"
|
||||
OutputFile="$(OutDir)/bench_set_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
@@ -43,8 +43,7 @@
|
||||
ProgramDatabaseFile="$(OutDir)/bench_set.pdb"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
FixedBaseAddress="1"
|
||||
/>
|
||||
FixedBaseAddress="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
|
Reference in New Issue
Block a user