首先,请原谅我的一个非常基本的问题:我正在阅读教程并且我已经成功地编写了我的第一个 HDF5 数据集。现在,我正在转向平板,但我发现这样做很困难。
据我了解,我需要获得一个有效的内存空间,选择一个slab,然后写入我的数据。但显然我做错了什么,因为我得到了错误:
HDF5-DIAG: Error detected in HDF5 (1.8.14) thread 0:
#000: H5Dio.c line 271 in H5Dwrite(): can't prepare for writing data
major: Dataset
minor: Write failed
#001: H5Dio.c line 352 in H5D__pre_write(): can't write data
major: Dataset
minor: Write failed
#002: H5Dio.c line 690 in H5D__write(): src and dest data spaces have different sizes
major: Invalid arguments to routine
minor: Bad value
Run Code Online (Sandbox Code Playgroud)
显然我试图用错误的维度编写数据,但我不知道如何纠正。我的目标是创建一个 20x3 矩阵,并将第二行设置为{ 10, 20, 30 }
:
0 0 0
10 20 …
Run Code Online (Sandbox Code Playgroud) 我开始阅读模板,我发现智能指针使用双模板,如下所示:
template <class T>
class myclass
{
public:
template <class U>
myclass(U* q) { /* ... */ }
};
Run Code Online (Sandbox Code Playgroud)
那是什么意思?我知道模板功能会推断U
,如
myclass(new whatever(3));
Run Code Online (Sandbox Code Playgroud)
U
会在哪里whatever*
.那是什么T
?U
和之间有什么关系T
?
我糊涂了...