gpt4 book ai didi

c++ - 树有什么特殊的 boost\std 容器?

转载 作者:行者123 更新时间:2023-11-27 23:28:53 26 4
gpt4 key购买 nike

所以我想存储对 string-path <-> my_file_object在这样的容器中,预期总对象大小为 100 000。

  • 我需要通过绝对路径搜索来获取对象,例如我可以搜索 a/b/c/file.h )
  • 我需要能够列出 folder 中的所有项目名称像文件夹a/b/c/包含文件 file.h , file.cpp , 文件夹 bin/和文件夹 bin2/
  • 我需要能够添加新的 files通过绝对路径,并更新它们。
  • 我需要能够删除 files .

我想知道一些事情 - 在 STL/boost 中是否有这样的容器?此实现对于读取来说是线程安全的吗?

我还想知道它是否比将我所有的对都放在 std::map<string, object> 中更快?所以我会通过 code like this 进行快速搜索、快速插入和删除以及列出文件夹文件?

最佳答案

您有什么要求可以排除 std::map?据我所知,它将在这里运行良好:

typedef std::map<std::string,file_object_t> paths_t;
paths_t paths;

//I need to have search by absolute path
paths_t::iterator fileIterator = paths.find("a/b/c/file.h");
if( fileIterator != paths.end() ) {
...
}

//I need to be capable to list all item names in folder like folder a/b/c/
std::string folder = "a/b/c/";
paths_t::iterator folderBegin = paths.upper_bound(folder );
paths_t::iterator folderEnd = paths.upper_bound(folder+MAX_CHAR);
std::for_each(folderBegin,folderEnd,...);

//I need to be capable to add new files by absolute path
if( !paths.insert(paths_t::value_type("a/b/c/file.h",file)).second ) {
//add file failed
}

//and update them.
paths["a/b/c/file.h"].some_method_that_updates_file();

//I need to be capable to delete files
paths.erase(fileIterator);

关于c++ - 树有什么特殊的 boost\std 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7257218/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com