Qmap里加vector
时间: 2023-07-23 09:09:05 浏览: 47
可以使用 `std::map` 的下标运算符 `[]` 来访问键对应的值,如果这个键对应的值不存在,会自动创建一个新的值,你可以将一个 `std::vector` 添加到这个新的值中。
例如,假设要创建一个将字符串映射到整数向量的 `std::map`,可以使用以下代码:
```c++
#include <map>
#include <vector>
#include <string>
int main() {
std::map<std::string, std::vector<int>> myMap;
// 添加一个名为 "example" 的键,并将一个包含三个整数的向量添加到值中
myMap["example"] = {1, 2, 3};
// 添加一个名为 "foo" 的键,并将一个包含两个整数的向量添加到值中
std::vector<int> myVector = {4, 5};
myMap["foo"] = myVector;
return 0;
}
```
这将创建一个名为 `myMap` 的映射,将字符串键映射到整数向量。该代码将创建两个键值对,一个键为 "example",值为 `{1, 2, 3}` 的向量,另一个键为 "foo",值为 `{4, 5}` 的向量。
相关问题
QMap insert
QMap的insert函数有两个重载版本,分别是:
1. `QMap<Key, T>::iterator QMap::insert(const Key &key, const T &value)`
2. `QMap<Key, T>::iterator QMap::insert(QMap<Key, T>::const_iterator pos, const Key &key, const T &value)`
第一个版本的insert函数用于在QMap中插入一个键值对,参数`key`表示要插入的键,参数`value`表示要插入的值。该函数返回一个迭代器,指向插入的元素。
第二个版本的insert函数用于在指定位置插入一个键值对,参数`pos`表示要插入的位置,参数`key`表示要插入的键,参数`value`表示要插入的值。该函数返回一个迭代器,指向插入的元素。
以下是一个示例演示如何使用QMap的insert函数:
```cpp
#include <QMap>
#include <QDebug>
int main() {
QMap<QString, int> map;
// 使用第一个版本的insert函数插入键值对
map.insert("apple", 10);
map.insert("banana", 20);
// 使用第二个版本的insert函数在指定位置插入键值对
QMap<QString, int>::iterator it = map.insert(map.find("apple"), "orange", 30);
// 打印插入后的QMap
for (auto i = map.begin(); i != map.end(); ++i) {
qDebug() << i.key() << ":" << i.value();
}
return 0;
}
```
输出结果为:
```
orange : 30
apple : 10
banana : 20
```
QMap erase
QMap的erase函数用于删除指定的元素。根据引用和引用的描述,使用erase函数后,迭代器指针会失效,再次调用会导致崩溃。为了避免这个问题,建议在erase操作后,更新迭代器指针的位置,可以使用it = mapIntToInt.erase(it)的形式。下面是一个示例代码,演示了如何在for循环中使用QMap的erase函数:
```cpp
QMap<int, int> mapIntToInt;
mapIntToInt.insert(1, 10);
mapIntToInt.insert(2, 20);
mapIntToInt.insert(3, 30);
mapIntToInt.insert(4, 40);
QMap<int, int>::iterator it;
for (it = mapIntToInt.begin(); it != mapIntToInt.end(); ) {
int num = it.key();
qDebug() << "The current number is " << num;
if (num % 2 == 0) {
it = mapIntToInt.erase(it);
qDebug() << "Erased number: " << num;
} else {
++it;
}
}
```
在上述示例中,我们创建了一个QMap对象mapIntToInt,并插入了四个键值对。然后,我们使用for循环遍历mapIntToInt,并根据条件删除偶数键值对。在删除操作后,我们使用it = mapIntToInt.erase(it)更新迭代器指针的位置,以避免迭代器失效的问题。