本文整理汇总了C++中Array::GetDimCnt方法的典型用法代码示例。如果您正苦于以下问题:C++ Array::GetDimCnt方法的具体用法?C++ Array::GetDimCnt怎么用?C++ Array::GetDimCnt使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Array
的用法示例。
在下文中一共展示了Array::GetDimCnt方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: exit
void SprsArray<Dtype>::Create(const Array<Dtype>& array) {
// verify the array
if (array.GetDimCnt() != 2) {
std::cout << "[ERROR] the input array must be 2-dimensional" << std::endl;
exit(-1);
} // ENDIF: array
// obtain basic variables
rowCnt_ = array.GetDimLen(0);
colCnt_ = array.GetDimLen(1);
nnzCnt_ = 0;
std::size_t eleCnt = array.GetEleCnt();
const Dtype* pData = array.GetDataPtr();
for (std::size_t eleIdx = 0; eleIdx < eleCnt; ++eleIdx) {
if (ABS(pData[eleIdx]) > kEpsilon) {
nnzCnt_++;
} // ENDIF: ABS
} // ENDFOR: eleIdx
// release space occupied by previous pointers (if any)
Delete();
// allocate space for pointers
val_ = new Dtype[nnzCnt_];
idx_ = new MKL_INT[nnzCnt_];
ptrb_ = new MKL_INT[rowCnt_];
ptre_ = new MKL_INT[rowCnt_];
// convert the dense array to CSR format, zero-based indexing)
std::size_t nnzIdx = 0;
for (std::size_t rowIdx = 0; rowIdx < rowCnt_; ++rowIdx) {
// initialize variables for the current row
const Dtype* pData = array.GetDataPtr() + rowIdx * colCnt_;
bool isFirst = true;
// scan through the current row
for (std::size_t colIdx = 0; colIdx < colCnt_; ++colIdx) {
if (ABS(pData[colIdx]) > kEpsilon) {
val_[nnzIdx] = pData[colIdx];
idx_[nnzIdx] = colIdx;
if (isFirst) {
isFirst = false;
ptrb_[rowIdx] = nnzIdx;
} // ENDIF: isFirst
ptre_[rowIdx] = ++nnzIdx;
} // ENDIF: ABS
} // ENDFOR: colIdx
} // ENDFOR: rowIdx
}