如何将 一个数据结构进行存储,然后可以使用存储的结构进行初始化,比如自定义了 MYString 这个数据结构,怎么将其放在一个MAP中,并且绑定一个key 使用时 可以 类似 new QMap.value(key) 进行使用
时间: 2024-03-27 14:39:07 浏览: 49
在 Qt C++ 中,可以使用 QMap 来存储自定义数据类型。在使用 QMap 存储自定义数据类型时,需要提供该数据类型的默认构造函数和拷贝构造函数。以自定义的 MYString 数据类型为例,可以这样定义 QMap:
```cpp
#include <QMap>
#include "mystring.h" // 自定义的 MYString 数据类型
int main() {
// 定义 QMap,key 是 int 类型,value 是 MYString 类型
QMap<int, MYString> myMap;
// 向 QMap 中添加元素
myMap.insert(1, MYString("Hello"));
myMap.insert(2, MYString("World"));
// 从 QMap 中获取元素
MYString str1 = myMap.value(1);
MYString str2 = myMap.value(2);
// 打印获取的元素
qDebug() << "str1:" << str1 << ", str2:" << str2;
return 0;
}
```
在上面的代码中,我们首先在头文件中包含了自定义的 MYString 数据类型,然后定义了一个 QMap,key 是 int 类型,value 是 MYString 类型。接着,我们向 QMap 中添加了两个元素,并使用 myMap.value(key) 获取元素。注意,使用 QMap.value(key) 获取元素时,如果 key 不存在,会返回一个默认构造的对象。
如果需要使用动态对象,可以这样写:
```cpp
MYString* strPtr = new MYString(myMap.value(1));
// 使用 strPtr
delete strPtr;
```
在上面的代码中,我们使用 new 创建了一个 MYString 的动态对象,并使用 myMap.value(1) 初始化了该对象,最后使用完毕后需要手动释放内存。
阅读全文