qt 使用erase 函数删除qmat容器内所有的指针内容
时间: 2023-12-31 20:06:28 浏览: 155
基于C++ list中erase与remove函数的使用详解
在 Qt 中使用 QMat 类来操作矩阵,如果需要删除容器内所有的指针内容,可以使用 erase 函数结合迭代器来实现。具体的操作步骤如下:
1. 定义一个迭代器,使用 QList::begin() 函数获取容器的起始位置。
2. 遍历容器中的每个元素,使用 delete 关键字释放指针所指向的内存空间。
3. 使用 erase 函数删除容器中的元素。
4. 重复执行步骤 2 和步骤 3,直到容器中的元素全部被删除。
以下是示例代码:
```
QList<QMat*> matList; // 定义一个 QMat 类型的容器
// 向容器中添加元素
matList.append(new QMat(3, 3, CV_8UC1));
matList.append(new QMat(3, 3, CV_8UC3));
// 定义迭代器
QList<QMat*>::iterator it = matList.begin();
// 循环遍历容器
while (it != matList.end()) {
// 获取当前元素的指针
QMat* ptr = *it;
// 释放指针所指向的内存空间
delete ptr;
// 删除容器中的元素
it = matList.erase(it);
}
// 容器中的元素已全部删除
```
在上述代码中,我们定义了一个 QMat 类型的容器 matList,然后向其中添加了两个元素。接着,我们定义了一个迭代器 it,使用 begin 函数获取了容器的起始位置。然后,我们使用 while 循环遍历容器中的每个元素,获取其指针并释放内存空间,最后使用 erase 函数删除容器中的元素。循环继续执行直到容器中的元素全部被删除。
阅读全文