您好我有以下情况:
对于地图中的每个键值对,我都有一个std::map
表单。<std::string, std::vector<uint8_t>>
我需要确定磁盘上是否已经存在名称为 的文件,key
否则我需要将value
磁盘上的文件存储在名称为key
. 现在我要做的是:
std::vector<std::string> bases_to_stor(std::map<std::string,
std::vector<uint8_t>>& input)
{
std::vector<std::string> hashes;
for (std::map<std::string, std::vector<uint8_t>>::iterator it = input.begin(); it != input.end(); ++it)
{
if (!std::filesystem::exists(it->first))
{
bool hash_in_hashes = false;
for (const auto elm : hashes)
{
if (elm == it->first)
{
hash_hashes = true;
break;
}
}
if (!hash_in_hashes)
{
hashes.push_back(it->first);
}
}
}
return hashes;
}
但是大小input
可能非常大,+10k 个条目,因此我想exists
在多个线程中进行调用。但这有好处吗?存在调用可以并行完成吗?我一直无法在 C++ 标准中找到有关这方面的信息,也无法确定底层文件系统 EXT4 和 ZFS 是否支持,因此我需要对此有所启发。