并发命名空间运算符

命名空间中 提供了以下运算符:

运算符

创建一个任务,当作为参数提供的任一任务成功完成时,该任务也会成功完成。

template<typename ReturnType>
task<ReturnType> operator||(
    const task<ReturnType>& lhs,
    const task<ReturnType>& rhs);

template<typename ReturnType>
task<std::vector<ReturnType>> operator||(
    const task<std::vector<ReturnType>>& lhs,
    const task<ReturnType>& rhs);

template<typename ReturnType>
task<std::vector<ReturnType>> operator||(
    const task<ReturnType>& lhs,
    const task<std::vector<ReturnType>>& rhs);

inline task<void> operator||(
    const task<void>& lhs,
    const task<void>& rhs);

参数

ReturnType
返回任务的类型。

lhs
首个要合并到结果任务中的任务。

rhs
合并到最终任务中的第二个任务。

返回值

当输入任务中的任何一个成功完成时,该任务就成功完成。 如果输入任务的类型为 ,则此函数的输出将为 。 如果输入任务的类型为 ,则输出任务也将是 。

注解

如果两个任务均被取消或抛出异常,返回的任务将以已取消状态完成。如果在调用该任务的 或 时遇到异常,将抛出其中一个异常。

运算符

创建一个任务,在作为参数提供的两个任务成功完成后,此任务将成功完成。

template<typename ReturnType>
task<std::vector<ReturnType>>  operator&&(
    const task<ReturnType>& lhs,
    const task<ReturnType>& rhs);

template<typename ReturnType>
task<std::vector<ReturnType>>  operator&&(
    const task<std::vector<ReturnType>>& lhs,
    const task<ReturnType>& rhs);

template<typename ReturnType>
task<std::vector<ReturnType>>  operator&&(
    const task<ReturnType>& lhs,
    const task<std::vector<ReturnType>>& rhs);

template<typename ReturnType>
task<std::vector<ReturnType>>  operator&&(
    const task<std::vector<ReturnType>>& lhs,
    const task<std::vector<ReturnType>>& rhs);

inline task<void>  operator&&(
    const task<void>& lhs,
    const task<void>& rhs);

参数

ReturnType
返回任务的类型。

lhs
首个要合并到结果任务中的任务。

rhs
合并到最终任务中的第二个任务。

返回值

当两个输入任务都成功完成时,一个任务才能成功完成。 如果输入任务的类型为 ,则此函数的输出将为 。 如果输入任务的类型为 ,则输出任务也将是 。

注解

如果其中一个任务被取消或抛出异常,返回的任务将提前完成(处于已取消状态)。并且如果在该任务上调用 或 ,且发生异常,将抛出该异常。

operator== 运算符

测试运算符左侧的 对象是否等于右侧的 对象。

template<typename T, class A1, class A2>
inline bool operator== (
    const concurrent_vector<T, A1>& _A,
    const concurrent_vector<T, A2>& _B);

参数

T
并发向量中存储的元素的数据类型。

A1
第一个 对象的分配器类型。

A2
第二个 对象的分配器类型。

_A
一个 类型的对象。

_B
一个 类型的对象。

返回值

如果运算符左侧的并发向量等于运算符右侧的并发向量,则为 ;否则为 。

注解

如果两个并发向量的元素数目相同且对应元素具有相同的值,则两个并发向量相等。 否则,它们不相等。

对于可以修改并发向量 或 的其他方法,此方法不是并发安全的。

operator!= 运算符

测试运算符左侧的 对象是否不等于右侧的 对象。

template<typename T, class A1, class A2>
inline bool operator!= (
    const concurrent_vector<T, A1>& _A,
    const concurrent_vector<T, A2>& _B);

参数

T
并发向量中存储的元素的数据类型。

A1
第一个 对象的分配器类型。

A2
第二个 对象的分配器类型。

_A
一个 类型的对象。

_B
一个 类型的对象。

返回值

如果并发向量不相等,则为 ;如果并发向量相等,则为 。

注解

如果两个并发向量的元素数目相同且对应元素具有相同的值,则两个并发向量相等。 否则,它们不相等。

对于可以修改并发向量 或 的其他方法,此方法不是并发安全的。

运算符

测试运算符左侧的 对象是否小于右侧的 对象。

template<typename T, class A1, class A2>
inline bool operator<(
    const concurrent_vector<T, A1>& _A,
    const concurrent_vector<T, A2>& _B);

参数

T
并发向量中存储的元素的数据类型。

A1
第一个 对象的分配器类型。

A2
第二个 对象的分配器类型。

_A
一个 类型的对象。

_B
一个 类型的对象。

返回值

如果运算符左侧的并发向量小于运算符右侧的并发向量,则为 ;否则为 。

注解

此运算符的行为与 命名空间中 类的等效运算符相同。

对于可以修改并发向量 或 的其他方法,此方法不是并发安全的。

运算符

测试运算符左侧的 对象是否小于或等于右侧的 对象。

template<typename T, class A1, class A2>
inline bool operator<= (
    const concurrent_vector<T, A1>& _A,
    const concurrent_vector<T, A2>& _B);

参数

T
并发向量中存储的元素的数据类型。

A1
第一个 对象的分配器类型。

A2
第二个 对象的分配器类型。

_A
一个 类型的对象。

_B
一个 类型的对象。

返回值

如果运算符左侧的并发向量小于运算符右侧的并发向量,则为 ;否则为 。

注解

此运算符的行为与 命名空间中 类的等效运算符相同。

对于可以修改并发向量 或 的其他方法,此方法不是并发安全的。

运算符

测试运算符左侧的 对象是否大于右侧的 对象。

template<typename T, class A1, class A2>
inline bool operator>(
    const concurrent_vector<T, A1>& _A,
    const concurrent_vector<T, A2>& _B);

参数

T
并发向量中存储的元素的数据类型。

A1
第一个 对象的分配器类型。

A2
第二个 对象的分配器类型。

_A
一个 类型的对象。

_B
一个 类型的对象。

返回值

如果运算符左侧的并发向量大于运算符右侧的并发向量,则为 ;否则为 。

注解

此运算符的行为与 命名空间中 类的等效运算符相同。

对于可以修改并发向量 或 的其他方法,此方法不是并发安全的。

运算符

测试运算符左侧的 对象是否大于或等于右侧的 对象。

template<typename T, class A1, class A2>
inline bool operator>= (
    const concurrent_vector<T, A1>& _A,
    const concurrent_vector<T, A2>& _B);

参数

T
并发向量中存储的元素的数据类型。

A1
第一个 对象的分配器类型。

A2
第二个 对象的分配器类型。

_A
一个 类型的对象。

_B
一个 类型的对象。

返回值

如果运算符左侧的并发向量大于运算符右侧的并发向量,则为 ;否则为 。

注解

此运算符的行为与 命名空间中 类的等效运算符相同。

对于可以修改并发向量 或 的其他方法,此方法不是并发安全的。

另请参阅

并发命名空间