【发布时间】:2015-04-29 22:23:38
【问题描述】:
我正在尝试创建 basic_path (data/images/lol.png -> images/lol.png) 的一级深层子路径。
我尝试了std::path{ ++path.begin(), path.end() } 之类的方法,但范围构造函数显然需要string_type::iterators,而不是basic_path::iterators。
我是否可以使用basic_path 方法来做我需要的事情,还是我必须使用std::accumulate( ++path.begin(), path.end() ) 之类的方法(恕我直言效率非常低)?
【问题讨论】:
-
我很好奇你的累积问题是什么。看来你无论如何也别无选择。在性能方面,考虑到大多数情况下路径少于 200 个字符,我认为这还不错。
-
当然,但在性能方面,它仍然是一个较慢的类(在最坏的情况下 O(1) vs O(logn) 分配),复杂性方面它更慢(O(1) vs O(n ) 在最坏的情况下)。据我所知,路径迭代器构造函数是微不足道的,所以它的丢失对我来说很奇怪。同样从我公认的糟糕记忆来看,它也是标准库中第一个带有迭代器的类的实例,它没有采用这些迭代器的构造函数。
标签: c++ stl boost-filesystem