【问题标题】:Can | be used as a pipe in C++可以 |在 C++ 中用作管道
【发布时间】:2021-10-11 21:32:05
【问题描述】:

此视频表明 |用于通过函数传递数据

这是按位或可以做到的,还是我错过了什么?

auto selection = data | drop(from)
                      | take(to - from)
                      | filter(predicate);

(见第二个例子: https://youtube.com/shorts/weGxJilk-c4)

【问题讨论】:

  • 这是 C++20 ranges 库的二进制 | 运算符的特定重载。
  • bitwise 或 | 是一个普通的运算符,您可以像大多数其他运算符一样根据自己的喜好重载,所以是的,您可以将它用作管道。 C++20 已经这样做了,你可以谷歌 C++20 范围
  • 好吧,操作符可以重载,所以是的。
  • @JeremyFriesner • operator| 的关联性何时从左到右变为由实现定义的?
  • @Eljay 不是关联性;操作顺序。见:stackoverflow.com/questions/53513909/…

标签: c++


【解决方案1】:

这是按位还是可以的?

是的。当用于整数类型时,按位或| 的作用类似于按位或

在其他类型上,例如类,这个操作符可以被重载来获得类作者想要的任何行为。在您的代码中,它对标准库中 ranges library 中的类进行操作,您说得对,它的工作原理类似于“管道”。

当用于从std::basic_ostream 派生的类时,您已经看到使用 bitshift 运算符 << 完成了非常相似的操作,例如

std::cout << "Hello world!\n";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多