QMap.erase
时间: 2023-10-21 12:58:30 浏览: 62
在C++中,QMap的erase函数用于从映射中删除指定的元素。它接受一个迭代器参数,并返回指向被删除元素后面的元素的迭代器。在给定的示例代码中,erase函数被用来删除偶数项。具体来说,通过迭代器it遍历QMap中的元素,如果当前键的值是偶数,则使用erase函数删除该元素,并将迭代器指向被删除元素后面的元素。这样可以避免在迭代器操作时遇到问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [QT类学习系列(9)- Qt::QMap在for循环中使用erase的用法注意](https://blog.csdn.net/qq_22122811/article/details/89319320)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
相关问题
如何将 一个数据结构进行存储,然后可以使用存储的结构进行初始化,比如自定义了 MYString 这个数据结构,怎么将其放在一个MAP中,并且绑定一个key 使用时 可以 类似 new QMap.value(key) 进行使用
在 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) 初始化了该对象,最后使用完毕后需要手动释放内存。
E:\ruanjian\QT551\5.5\mingw492_32\include\QtCore\qmap.h:67: error: no match for 'operator<' (operand types are 'const QList<QString>' and 'const QList<QString>') return key1 < key2; ^
这个错误出现在 QMap.h 文件的第67行,是因为 QMap 需要使用 "<" 运算符对键进行排序,但是你的 QMap 中的键类型 QList<QString> 并没有定义 "<" 运算符。
解决办法是,你需要自定义一个 "<" 运算符来排序 QList<QString> 类型的键。例如:
```c++
struct QListLessThan {
bool operator()(const QList<QString> &key1, const QList<QString> &key2) const {
// 自定义排序规则
return key1.join("") < key2.join("");
}
};
QMap<QList<QString>, int, QListLessThan> myMap;
```
在上面的例子中,我们自定义了一个结构体 QListLessThan,实现了一个自定义的 "<" 运算符。然后在创建 QMap 对象时,将 QListLessThan 作为第三个模板参数传入,告诉 QMap 使用我们自定义的排序规则。