命名空间中 提供了以下运算符:
运算符
创建一个任务,当作为参数提供的任一任务成功完成时,该任务也会成功完成。
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
一个 类型的对象。
返回值
如果运算符左侧的并发向量大于运算符右侧的并发向量,则为 ;否则为 。
注解
此运算符的行为与 命名空间中 类的等效运算符相同。
对于可以修改并发向量 或 的其他方法,此方法不是并发安全的。
另请参阅
并发命名空间