std::map<std::string,int>g_mapDeviceSn;的使用方法
时间: 2024-09-10 07:08:29 浏览: 45
`std::map` 是 C++ 标准库中的一个关联容器,它存储的元素是键值对(key-value pairs),并且会根据键自动排序。在您给出的例子中,`std::map<std::string,int>` 表示键是 `std::string` 类型,值是 `int` 类型的映射。
以下是一些基本的使用方法:
1. 插入元素:
```cpp
g_mapDeviceSn["SN123"] = 100; // 插入键为"SN123",值为100的元素
```
2. 查询元素:
```cpp
if (g_mapDeviceSn.find("SN123") != g_mapDeviceSn.end()) {
// 如果找到了键为"SN123"的元素,则执行某些操作
}
```
3. 访问元素:
```cpp
int value = g_mapDeviceSn.at("SN123"); // 获取键为"SN123"的值,如果不存在会抛出异常
// 或者
int value = g_mapDeviceSn["SN123"]; // 如果不存在,则会插入一个默认值初始化的元素,类型为int时,默认为0
```
4. 删除元素:
```cpp
g_mapDeviceSn.erase("SN123"); // 删除键为"SN123"的元素
```
5. 遍历 map:
```cpp
for (const auto& pair : g_mapDeviceSn) {
std::string key = pair.first;
int value = pair.second;
// 对每个键值对执行操作
}
```
使用时请注意,`std::map` 在内部实现是基于红黑树的,因此插入、查找和删除操作的时间复杂度通常是 O(log n)。对于访问元素,使用 `at()` 方法可以得到一个引用,如果元素不存在,会抛出一个 `std::out_of_range` 异常;使用 `[]` 操作符则不会抛出异常,但可能会导致潜在的未定义行为,因为如果键不存在,它会创建一个新的键值对。
阅读全文