operator==,!=,<,<=,>,>= (std::valarray)
|
定义于头文件
<valarray>
|
||
|
template
<
class
T
>
std::
valarray
<
bool
>
运算符
==
(
const
std::
valarray
<
T
>
&
lhs,
const
std::
valarray
<
T
>
&
rhs
)
;
|
(1) | |
|
template
<
class
T
>
std::
valarray
<
bool
>
operator
==
(
const
typename
std::
valarray
<
T
>
::
value_type
&
lhsv,
|
(2) | |
|
template
<
class
T
>
std::
valarray
<
bool
>
operator
==
(
const
std::
valarray
<
T
>
&
lhs,
|
(3) | |
将数值数组中的每个值与另一个值进行比较。
如果 size ( ) ! = v. size ( ) 则行为未定义。
目录 |
参数
| lhs, rhs | - | 用于比较的数值数组 |
| lhsv, rhsv | - | 与数值数组中每个元素进行比较的值 |
返回值
一个数值数组,包含 bool 类型数据,表示对应元素的比较结果。
异常
可能抛出实现定义的异常。
注释
每个运算符只有在满足以下要求时才能被实例化:
-
-
指定的运算符可应用于类型
T。 - 结果值能够明确转换为 bool 。
-
指定的运算符可应用于类型
该函数的实现可以具有不同于 std::valarray 的返回类型。在这种情况下,替换类型需具备以下特性:
-
- 提供了 const 成员函数的完整实现。
- 可从替换类型构造 std::valarray 、 std::slice_array 、 std::gslice_array 、 std::mask_array 及 std::indirect_array 。
- 对于每个接受 const std:: valarray < T > & 参数的函数(除 begin() 与 end() 外 (C++11 起) ),均应添加接受替换类型的相同函数。
- 对于每个接受两个 const std:: valarray < T > & 参数的函数,均应添加接受 const std:: valarray < T > & 与替换类型所有组合的相同函数。
- 返回类型的模板嵌套层级不超过最深参数类型的两层。
示例
#include <iostream> #include <valarray> int main() { // 将 valarray 中的所有负数归零 std::valarray<int> v = {1, -1, 0, -3, 10, -1, -2}; std::cout << "Before: "; for (auto n : v) std::cout << n << ' '; std::cout << '\n'; v[v < 0] = 0; std::cout << "After: "; for (auto n : v) std::cout << n << ' '; std::cout << '\n'; // 将 == 运算产生的 valarray<bool> 结果转换为单个布尔值 std::valarray<int> a = {1, 2, 3}; std::valarray<int> b = {2, 4, 6}; std::cout << "2*a == b is " << std::boolalpha << (2 * a == b).min() << '\n'; }
输出:
Before: 1 -1 0 -3 10 -1 -2 After: 1 0 0 0 10 0 0 2*a == b is true
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的 C++ 标准。
| DR | 适用版本 | 发布行为 | 正确行为 |
|---|---|---|---|
| LWG 3074 | C++98 |
T
同时从标量和
valarray
推导
导致不允许混合类型调用 |
仅从
valarray
推导
T
|