From 155b3a832c590c55ea3d89dd0783713f1d0f19c1 Mon Sep 17 00:00:00 2001 From: KunoiSayami Date: Sun, 4 Jun 2023 19:35:54 +0800 Subject: fix: Fix compile error Signed-off-by: KunoiSayami --- read_helper.h | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) (limited to 'read_helper.h') diff --git a/read_helper.h b/read_helper.h index 2256ef8..f4615d4 100644 --- a/read_helper.h +++ b/read_helper.h @@ -3,7 +3,7 @@ #define LOCKFREE_READ_HELPER_H #include -#include +#include #include #include @@ -15,9 +15,8 @@ #endif #endif -// template -class ReadHelper { - typedef unsigned long long key_type; +template class ReadHelper_ { + // typedef unsigned long long key_type; key_type max_value = std::numeric_limits::min(), min_value = std::numeric_limits::max(); @@ -46,8 +45,8 @@ class ReadHelper { public: const size_t sample_length, population_length, random_number; - ReadHelper(char const *filename, size_t sample_length, - size_t population_length, size_t total_row = 0) + ReadHelper_(char const *filename, size_t sample_length, + size_t population_length, size_t total_row = 0) : filename(filename), sample_length(sample_length), population_length(population_length), random_number(genRandomRow(total_row)) { @@ -68,24 +67,24 @@ public: bool readFile() { this->population_vector.clear(); auto read_number = 0UL; - FILE *file = fopen(filename, "r"); + std::ifstream fin(filename); - if (file == nullptr) { - fprintf(stderr, "Unable to open file %s\n", filename); + if (!fin.is_open()) { return false; } P_ERR("Reading sample"); - for (key_type i; - read_number < sample_length && fscanf(file, "%lld ", &i) != EOF; - store_into_vector(i)) + for (key_type i; read_number < sample_length && !fin.eof(); + store_into_vector(i)) { + fin >> i; read_number++; + } if (random_number > 0) { P_ERR("\rReading skip"); // fprintf(stderr, "Skip %lu\n", read_number); read_number = random_number; - for (key_type i; read_number > 0 && fscanf(file, "%lld ", &i) != EOF;) + for (key_type i; read_number > 0 && !fin.eof(); fin >> i) read_number--; } @@ -93,10 +92,11 @@ public: read_number = 0; auto remain = population_length + REVERSED_BLOCK; - for (key_type i; read_number < remain && fscanf(file, "%lld ", &i) != EOF; - store_into_vector(i)) + for (key_type i; read_number < remain && !fin.eof(); store_into_vector(i)) { + fin >> i; read_number++; - fclose(file); + } + fin.close(); P_ERR("\r"); return true; } @@ -127,4 +127,6 @@ public: size_t size() const { return this->population_vector.size(); } }; +typedef ReadHelper_ ReadHelper; + #endif \ No newline at end of file -- cgit v1.3.1