L. *_* F. 3 c++ iterator std c++20
随着即将到来的Ranges库的出现,用两个迭代器来表示一个范围的需求几乎消失了。例如,代替
if (std::equal(begin(foo), end(foo), begin(bar), end(bar)))
Run Code Online (Sandbox Code Playgroud)
我们有
if (std::ranges::equal(foo, bar))
Run Code Online (Sandbox Code Playgroud)
后者之所以可以说是优越的,不仅因为它的简洁性,还因为它避免了忽略end(bar)和欢迎绑定错误的常见陷阱。
下面的代码怎么样?
std::vector<int> vec{begin(foo), end(foo)};
Run Code Online (Sandbox Code Playgroud)
foo范围在哪里。使用Ranges,我希望将其简化为
std::vector<int> vec{foo};
Run Code Online (Sandbox Code Playgroud)
但是,我在[vector]或[container.requirements]中找不到任何提及。Ranges库也没有引入一组新的容器。
为什么Ranges库不支持范围内的容器初始化?理由是什么?
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |