Мне интересно, какие реализации (ниже) дадут мне лучшую производительность во времени и пространстве.Допустим, у меня есть следующая структура каталогов.
/dir1
OWN={root,usr}
/dir2
DEP={dir1}
OWN={usr}
Я однократно прошёл все директории из "./", где у каждого каталога есть файл владельца и может быть файл зависимости.Я читаю их содержание и создаю хеш-таблицы.
#include <iostream>
#include <unordered_map>
using namespace std;
int main(int argc, char** argv){
unordered_map<string, vector<string>> dir_ownerss;
// /dir1 --> [root, usr]
// /dir2 --> [usr]
unordered_map<string, vector<string>> dir_dependenciess;
// /dir1 --> [dir2]
unordered_map<string, vector<vector<string>>> dir_owners_and_dependenciess;
// /dir1 --> [ [/dir1, root, usr] [/dir2, usr] ]
// /dir2 --> [ [/dir2, usr] ]
return 0;
}
Позже в этой программе я выполню некоторые операции поиска или поиска () для проверки принадлежности и зависимостей.Поскольку операции хеширования в среднем равны O (1), то в порядке порядка я не вижу разницы.Один требует двух вызовов find (), другой - одного вызова, но, возможно, не предпочтителен из-за хеширования, пробела, ... Кроме того, в плане дизайна нет предела.