作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建 basic_path 的一层深度子路径(data/images/lol.png
-> images/lol.png
)。
我尝试了类似 std::path{++path.begin(), path.end() }
但范围构造函数显然需要 string_type::iterator
s,而不是 basic_path::iterator
s。
我是否可以使用 basic_path
方法来做我需要的事情,或者我是否必须使用类似 std::accumulate(++path.begin(), path. end() )
(恕我直言,效率很低)?
最佳答案
我能找到的最好的是
path subpath(path p) {
auto pathString = p.native();
auto newBegin = find(pathString.begin(), pathString.end(), path::preferred_separator);
return path{ ++newBegin, pathString.end() };
}
它只需要一次分配,但它的时间复杂度仍然是 O(n),但是我想不出有什么方法可以进一步加快速度。
它仍然比 accumulate(200 个字符路径)快:
accumulate: 31386 ns ± 5336.29
my subpath: 785.857 ns ± 422.013
关于c++ - 是否可以从一系列路径迭代器或子路径创建文件系统 TS basic_path?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29955632/
我正在尝试创建 basic_path 的一层深度子路径(data/images/lol.png -> images/lol.png)。 我尝试了类似 std::path{++path.begin(),
我是一名优秀的程序员,十分优秀!