QMap初始化方式
时间: 2023-07-23 12:14:54 浏览: 536
QMap有多种初始化方式,下面列举几种常见的:
1. 使用默认构造函数初始化
```cpp
QMap<QString, int> map; // 默认构造函数创建一个空的QMap对象
```
2. 使用列表初始化
```cpp
QMap<QString, int> map = {{"apple", 5}, {"banana", 3}, {"orange", 2}};
```
3. 使用拷贝构造函数初始化
```cpp
QMap<QString, int> map1 = {{"apple", 5}, {"banana", 3}, {"orange", 2}};
QMap<QString, int> map2(map1); // 使用拷贝构造函数创建一个与map1相同的QMap对象
```
4. 使用迭代器初始化
```cpp
QMap<QString, int> map;
map.insert("apple", 5);
map.insert("banana", 3);
map.insert("orange", 2);
QMap<QString, int> copyMap;
QMap<QString, int>::const_iterator iter;
for (iter = map.constBegin(); iter != map.constEnd(); ++iter) {
copyMap.insert(iter.key(), iter.value());
}
```
5. 使用std::map初始化
```cpp
std::map<std::string, int> stdMap = {{"apple", 5}, {"banana", 3}, {"orange", 2}};
QMap<QString, int> map(stdMap.begin(), stdMap.end());
```
6. 使用自定义比较函数初始化
```cpp
struct MyCompare {
bool operator()(const QString& s1, const QString& s2) const {
return s1.toLower() < s2.toLower();
}
};
QMap<QString, int, MyCompare> map = {{"apple", 5}, {"Banana", 3}, {"orange", 2}};
```
以上就是QMap的几种常见的初始化方式。需要注意的是,在使用自定义比较函数初始化QMap时,需要将自定义比较函数的类型作为第三个模板参数传入,例如QMap<QString, int, MyCompare>。
阅读全文