Chào mọi người, mình là newbie. Mình đang test tốc độ của việc đọc ghi std::map này từ RAM xuống file và ngược lại (tạm thời sử dụng thư viện boost để serialization)
Mình cần tạo một map với nhiều cặp key value dạng string ngẫu nhiên.
Mã:
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <iostream>
#include <fstream>
#include <map>
#include <string>
#include <boost/version.hpp>
#include <sstream>
#include <boost/serialization/serialization.hpp>
#include <boost/serialization/map.hpp>
#include <chrono>
using namespace std;
string randomString(int len) {
srand(time(0));
string str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
int pos;
while (str.size() != len) {
pos = ((rand() % (str.size() - 1)));
str.erase(pos, 1);
}
return str;
}
void save() {
std::map<std::string, std::string> myMap;
string key;
string value;
for (int i = 0; i < 50; i++) {
myMap[randomString(20)] = randomString(20);
}
cout << "Map size: " << myMap.size() << endl;
for (map<string, string>::iterator ii = myMap.begin(); ii != myMap.end(); ++ii) {
cout << (*ii).first << ": " << (*ii).second << endl;
}
auto start = std::chrono::high_resolution_clock::now();
auto finish = std::chrono::high_resolution_clock::now();
auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(finish - start).count();
std::cout << "Time = " << duration << " milliseconds" << std::endl;
}
int main() {
save();
return 0;
}
Vấn đề mình gặp phải là trong vòng for mình tạo ra các chuỗi string random để gán vào map, nhưng khi chạy thì các giá trị sinh ra đều giống nhau nên map chỉ tồn tại một (key,value) duy nhất do các key có giá trị giống nhau.
Mọi người giúp mình với ạ, vì sao random ra các chuỗi lại đều giống nhau?
Cảm ơn nhiều
View more random threads:
Thông qua phân tích dữ liệu Google từ 86 quốc gia, mới đây, một công ty tại Anh đã công bố bảng xếp hạng kích tấc "cậu nhỏ" của các nước trên thế giới. Kết quả, hầu hết các nước xếp ở nhóm đầu của...
"Chim" của chàng trai Việt thuộc...