但是我可以直接使用["key"]这个方式把
时间: 2024-03-04 15:48:57 浏览: 47
基于C++ map中key使用指针问题的详解
是的,你可以使用 QMap 的下标运算符 [] 直接插入键值对,如果键已经存在,那么它的值会被更新。例如:
```cpp
QMap<QString, int> map;
map["apple"] = 3;
map["banana"] = 2;
map["orange"] = 4;
map["banana"] = 1; // 插入一个已经存在的键
// 输出 map 中所有键值对
for (auto it = map.constBegin(); it != map.constEnd(); ++it) {
qDebug() << it.key() << it.value();
}
```
输出结果如下:
```
"apple" 3
"banana" 1
"orange" 4
```
在这个例子中,我们使用下标运算符 [] 直接插入键值对,如果键已经存在,那么它的值会被更新。这种方式比使用 insert() 函数更加简洁。
但是需要注意的是,如果你使用下标运算符 [] 访问一个不存在的键,那么 QMap 会自动插入一个默认值作为它的值。如果你不希望出现这种情况,可以使用 contains() 函数判断键是否存在,或者使用 value() 函数获取键对应的值,例如:
```cpp
if (map.contains("banana")) {
map["banana"] = 1;
}
int value = map.value("banana", 0); // 如果键不存在,返回默认值 0
```
阅读全文