本文整理汇总了C++中DM::Resize方法的典型用法代码示例。如果您正苦于以下问题:C++ DM::Resize方法的具体用法?C++ DM::Resize怎么用?C++ DM::Resize使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DM
的用法示例。
在下文中一共展示了DM::Resize方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DM
shared_ptr<DistMatrix<T,U,V>>
WriteProxy( AbstractDistMatrix<S>* A, const ProxyCtrl& ctrl )
{
typedef DistMatrix<T,U,V> DM;
if( std::is_same<S,T>::value )
{
DM* ACast = dynamic_cast<DM*>(A);
const bool haveDist = (ACast != nullptr);
const bool haveColAlign = haveDist &&
(!ctrl.colConstrain || A->ColAlign() == ctrl.colAlign);
const bool haveRowAlign = haveDist &&
(!ctrl.rowConstrain || A->RowAlign() == ctrl.rowAlign);
const bool haveRoot = haveDist &&
(!ctrl.rootConstrain || A->Root() == ctrl.root);
if( haveColAlign && haveRowAlign && haveRoot )
{
// Constrain the proxy to have the forced alignemnts.
// This is somewhat tricky since a subsequent write could otherwise
// change the alignment.
if( ctrl.colConstrain )
A->AlignCols( ctrl.colAlign );
if( ctrl.rowConstrain )
A->AlignRows( ctrl.rowAlign );
if( ctrl.rootConstrain )
A->SetRoot( ctrl.root );
return shared_ptr<DM>( ACast, []( const DM* B ) { } );
}
}
DM* ARaw = new DM( A->Grid() );
try
{
if( ctrl.rootConstrain )
ARaw->SetRoot( ctrl.root );
if( ctrl.colConstrain )
ARaw->AlignCols( ctrl.colAlign );
if( ctrl.rowConstrain )
ARaw->AlignRows( ctrl.rowAlign );
ARaw->Resize( A->Height(), A->Width() );
}
catch( std::exception& e )
{
delete ARaw;
throw e;
}
return shared_ptr<DM>
( ARaw, [=]( const DM* B ) { Copy( *B, *A ); delete B; } );
}