本文整理汇总了C++中nd::array::swap方法的典型用法代码示例。如果您正苦于以下问题:C++ array::swap方法的具体用法?C++ array::swap怎么用?C++ array::swap使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类nd::array
的用法示例。
在下文中一共展示了array::swap方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: promote_nd_arr_dim
/**
* This function promotes the requested `axis` from
* a strided dim to a var dim. It modifies `shape`, `coord`,
* `elem`, and `arr` to point to a new array, and
* copies the data over.
*/
static void promote_nd_arr_dim(std::vector<intptr_t> &shape,
std::vector<afpd_coordentry> &coord,
afpd_dtype &elem, nd::array &arr, intptr_t axis,
bool copy_final_coord)
{
vector<afpd_coordentry> newcoord;
afpd_dtype newelem;
newelem.dtp = elem.dtp;
// Convert the axis into a var dim
shape[axis] = -1;
// Create the new array
nd::array newarr = allocate_nd_arr(shape, newcoord, newelem, axis);
// Copy the data up to, but not including, the current `coord`
// from the old `arr` to the new one. The recursion stops
// at `axis`, where all subsequent dimensions are handled by the
// created kernel.
ckernel_builder<kernel_request_host> k;
if (elem.dtp.get_type_id() != uninitialized_type_id) {
make_assignment_kernel(&k, 0, newcoord[axis].tp, newcoord[axis].arrmeta_ptr,
coord[axis].tp, coord[axis].arrmeta_ptr,
kernel_request_strided, &eval::default_eval_context);
}
copy_to_promoted_nd_arr(shape, newarr.get_readwrite_originptr(), newcoord,
newelem, arr.get_readonly_originptr(), coord, elem, k,
0, axis, copy_final_coord, true);
arr.swap(newarr);
coord.swap(newcoord);
elem.swap(newelem);
}
示例2: promote_nd_arr_dtype
/**
* This function promotes the dtype the array currently has with
* `tp`, allocates a new one, then copies all the data up to the
* current index in `coord`. This modifies coord and elem in place.
*/
static void promote_nd_arr_dtype(const std::vector<intptr_t> &shape,
std::vector<afpd_coordentry> &coord,
afpd_dtype &elem, nd::array &arr,
const ndt::type &tp)
{
intptr_t ndim = shape.size();
vector<afpd_coordentry> newcoord;
afpd_dtype newelem;
if (elem.dtp.get_type_id() == uninitialized_type_id) {
// If the `elem` dtype is uninitialized, it means a dummy
// array was created to capture dimensional structure until
// the first value is encountered
newelem.dtp = tp;
} else {
newelem.dtp = promote_types_arithmetic(elem.dtp, tp);
}
// Create the new array
nd::array newarr = allocate_nd_arr(shape, newcoord, newelem, ndim);
// Copy the data up to, but not including, the current `coord`
// from the old `arr` to the new one
ckernel_builder<kernel_request_host> k;
if (elem.dtp.get_type_id() != uninitialized_type_id) {
make_assignment_kernel(&k, 0, newelem.dtp, newelem.arrmeta_ptr, elem.dtp,
elem.arrmeta_ptr, kernel_request_strided,
&eval::default_eval_context);
} else {
// An assignment kernel which copies one byte - will only
// be called with count==0 when dtp is uninitialized
make_assignment_kernel(&k, 0, ndt::type::make<char>(), NULL,
ndt::type::make<char>(), NULL,
kernel_request_strided, &eval::default_eval_context);
}
copy_to_promoted_nd_arr(shape, newarr.get_readwrite_originptr(), newcoord,
newelem, arr.get_readonly_originptr(), coord, elem, k,
0, ndim, false, true);
arr.swap(newarr);
coord.swap(newcoord);
elem.swap(newelem);
}
示例3: swap
inline void swap(nd::arrfunc &rhs) { m_value.swap(rhs.m_value); }