13得票1回答
为什么GCC在`std::ranges::max`的每次比较中都要复制对象?

考虑以下示例(Godbolt): #include <vector> #include <iostream> #include <ranges> #include <algorithm> struct A { A() {} A...

13得票2回答
你能使用新的ranges库进行压缩吗?

参见:http://eel.is/c++draft/#ranges 给定两个 C++2a 范围(即符合范围库中的范围概念的对象) a 和 b,长度相等,是否有一种方法将它们捆绑在一起,使得:for (const auto& [a,b] : zip(a,b)) 它是否符合您的期望?也就...

12得票1回答
使用C++20中的std::ranges::views作为参数传递

我有一个打印整数列表的方法(我的实际方法有点复杂,但也是只读的): void printElements(const std::vector<int> &integersList) { std::for_each(integersList.begin(), int...

12得票1回答
为C++20范围管道调整clang-format

C++20(同时在使用 std::ranges::to<T>() 时也适用于C++23)将使用 operator| 来创建一个转换管道变得十分惯用,例如下面这样: return numbers | std::views::filter([](int n) {...

12得票1回答
如何使用运算符 | 创建与现有视图交互的自定义视图?

如果我移除了#if 0块,为什么这段代码会失败并返回一堆复杂的错误信息?更重要的是,如何让它与上面非常相似的块产生相同的结果? #include <ranges> #include <iterator> #include <optional> #includ...

12得票1回答
C++20的std::ranges::sort是否不需要支持std::vector<bool>?

我注意到std::ranges::sort不能对std::vector&lt;bool&gt;进行排序: &lt;source&gt;:6:51: error: no match for call to '(const std::ranges::__sort_fn) (std::vector...

12得票2回答
C++20的std::views::filter无法正确过滤视图

我正在编写一个简单的C++程序,它会从正态分布中生成一组随机整数值,然后取前N个生成的项,并过滤掉绝对值小于42的项。我编写的代码如下: int main() { //convenience namespace rng = std::ranges; namespace vie...

11得票3回答
为什么std::common_iterator只是std::forward_iterator?

C++20引入了std::common_iterator,它能够将迭代器和终止条件类型不同的非常规元素范围表示为相同类型的常规范围。其概要定义如下: template&lt;input_­or_­output_­iterator I, sentinel_­for&lt;I&gt; S&gt;...

11得票2回答
一些编译器在处理简单的std::ranges代码时出现Bug或编译错误

我有一段代码使用了 C++20 的 ranges 库,取自 这个 Stack Overflow 的回答。该代码被某些编译器(版本)拒绝,一些旧的 GCC 版本会返回垃圾值。哪个编译器是正确的? 该代码应该打印出一个 std::vector&lt;std::vector&gt; 中第一列的元素。...

11得票1回答
查看迭代器在视图生命周期之外是否仍有效?

假设我有一个自定义容器类,它将数据存储在一个映射中:class Container { public: void add(int key, std::string value) { _data.emplace(key, std::move(value)); } private...