operator==,!=,<,<=,>,>=(std::valarray)
出自cppreference.com
| 在標頭 <valarray> 定義
|
||
| |
(1) | |
| |
(2) | |
| |
(3) | |
比較數值數組中的各值和另一個值。
1) 返回
bool 的數值數組,含應用指示的比較運算符到 lhs 與 rhs 的對應元素所獲得的每個元素。若 size() != v.size() 則行為未定義。
2) 返回
bool 的數值數組,含應用指示的比較運算符到 lhsv 與 rhs 的對應值所獲得的每個元素。3) 返回
bool 的數值數組,含應用指示的比較運算符到 lhs 的對應值與 rhsv 所獲得的每個元素。參數
| lhs, rhs | - | 要比較的數值數組 |
| lhsv, rhsv | - | 要與數值數組中每個元素比較的值 |
返回值
含對應元素比較結果的 bool 的數值數組。
異常
可能會拋出由實現定義的異常。
註解
僅若滿足下列要求,每個運算符才能實例化:
- 指示的運算符能應用於類型
T。 - 返回值能無歧義地轉換為
bool。
- 指示的運算符能應用於類型
函數可以實現為擁有不同於 std::valarray 的返回類型。此時替換它的類型擁有下列屬性:
- 提供 std::valarray 的所有
const成員函數。 - 能從替換類型構造 std::valarray、std::slice_array、std::gslice_array、std::mask_array 和 std::indirect_array。
- 所有接受一個
const std::valarray&類型參數的函數 ,除了 begin() 和 end()(C++11 起)也應該接受替換類型。 - 所有接受兩個
const std::valarray&類型參數的函數都應該接受const std::valarray&和替換類型的每種組合。 - 返回類型添加不多於兩層嵌套在最深層嵌套的參數類型上的模板。
- 提供 std::valarray 的所有
示例
運行此代碼
#include <iostream>
#include <valarray>
int main()
{
// 清零 valarray 中的所有负值
std::valarray<int> v = {1, -1, 0, -3, 10, -1, -2};
std::cout << "之前: ";
for(auto n: v) {
std::cout << n << ' ';
}
std::cout << '\n';
v[v < 0] = 0;
std::cout << "之后: ";
for(auto n: v) {
std::cout << n << ' ';
}
std::cout << '\n';
// 转换 == 的 valarray<bool> 结果为单个 bool
std::valarray<int> a = {1, 2, 3};
std::valarray<int> b = {2, 4, 6};
std::cout << "2*a == b 为 " << std::boolalpha
<< (2*a == b).min() << '\n';
}
輸出:
之前: 1 -1 0 -3 10 -1 -2
之后: 1 0 0 0 10 0 0
2*a == b 为 true
缺陷報告
下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。
| 缺陷報告 | 應用於 | 出版時的行為 | 正確行為 |
|---|---|---|---|
| LWG 3074 | C++98 | (2-3) 從標量和 valarray 兩者推導 T,禁止混合類型的調用
|
僅從 valarray 推導 T
|