std::map如何插入删除数据
时间: 2023-08-05 17:47:33 浏览: 46
std::map是C++ STL中的关联容器,它提供了一种将键映射到值的方式。为了插入数据,可以使用insert()函数,例如:
```
std::map<int, std::string> myMap;
myMap.insert(std::make_pair(1, "one"));
myMap.insert(std::make_pair(2, "two"));
```
上面的代码将会在myMap中插入两个键值对,一个是1和"one",另一个是2和"two"。如果想要删除一个键值对,可以使用erase()函数,例如:
```
myMap.erase(1);
```
上面的代码将会在myMap中删除键为1的键值对。如果想要删除多个键值对,可以使用erase()函数的另一种重载形式,例如:
```
myMap.erase(myMap.begin(), myMap.end());
```
上面的代码将会在myMap中删除所有的键值对。
相关问题
std::vector std::unordered_map的区别
std::vector和std::unordered_map是C++标准库中的两种不同类型的容器,它们有以下区别:
1. 数据结构:
- std::vector是一个动态数组,它在内存中以连续的方式存储元素。这使得std::vector支持随机访问,即可以通过索引快速访问任何元素。
- std::unordered_map是一个哈希表,它使用哈希函数将键映射到存储桶中。这使得std::unordered_map支持通过键快速查找值,但不支持随机访问。
2. 插入和删除操作:
- std::vector在尾部插入和删除元素的时间复杂度为O(1),但在中间或开头插入和删除元素的时间复杂度为O(n)。
- std::unordered_map在插入和删除元素时的平均时间复杂度为O(1)。
3. 元素的顺序:
- std::vector中的元素按照它们被插入的顺序进行存储,并且可以通过索引进行访问。
- std::unordered_map中的元素没有特定的顺序,它们根据哈希函数的结果进行存储。
4. 内存占用:
- std::vector在内存中以连续的方式存储元素,因此它的内存占用比较紧凑。
- std::unordered_map使用哈希表来存储元素,因此它的内存占用可能比较大。
下面是一个演示std::vector和std::unordered_map的例子:
```cpp
#include <iostream>
#include <vector>
#include <unordered_map>
int main() {
// 使用std::vector存储整数
std::vector<int> vec = {1, 2, 3, 4, 5};
// 使用std::unordered_map存储键值对
std::unordered_map<std::string, int> map = {{"apple", 1}, {"banana", 2}, {"orange", 3}};
// 访问std::vector中的元素
std::cout << "Vector element at index 2: " << vec[2] << std::endl;
// 访问std::unordered_map中的元素
std::cout << "Value of 'banana': " << map["banana"] << std::endl;
return 0;
}
```
std::unordered_map std::pair
std::unordered_map是C++ STL库中的一个关联容器,它可以快速地将键值对存储到哈希表中,并支持快速的查找、插入、删除等操作。unordered_map中的键值对是无序的,并且键必须是唯一的。如果您需要一个有序的关联容器,可以使用std::map。
std::pair是一个模板类,可以用来存储两个不同类型的对象。std::pair可以用来存储一对数据,例如一个键和它对应的值,也可以用来作为函数返回值。通常情况下,std::pair用在STL容器中作为键值对进行存储。std::pair提供了两个公共成员变量first和second,分别表示第一个和第二个元素。