C++ multimap容器如何初始化 并实现增删改查
时间: 2024-10-19 08:09:59 浏览: 35
在C++中,`multimap`是一个关联容器,它允许每个元素有一个唯一的键值对,并保持键的顺序排序。与`map`类似,但它可以有多个相同的键,每次插入时会自动排序并保留所有的键值对。
**初始化:**
你可以通过多种方式初始化`multimap`:
1. 空初始化:
```cpp
std::multimap<int, std::string> myMultimap;
```
2. 使用初始化列表:
```cpp
std::multimap<int, std::string> myMultimap = {
{1, "one"},
{2, "two"},
{3, "three"}
};
```
3. 使用构造函数接受迭代器:
```cpp
std::vector<std::pair<int, std::string>> data = {{1, "one"}, {2, "two"}};
myMultimap(data.begin(), data.end());
```
**增删改查操作:**
- **增加(Insertion)**:
```cpp
myMultimap.insert({4, "four"});
```
- **删除(Deletion)**:
- 删除单个元素(如果存在):
```cpp
if (myMultimap.find(2) != myMultimap.end()) {
myMultimap.erase(myMultimap.find(2));
}
```
- 删除范围内的元素:
```cpp
myMultimap.erase(myMultimap.lower_bound(2), myMultimap.upper_bound(4));
```
- **查找(Searching)**:
```cpp
auto it = myMultimap.find(2); // 返回指向键为2的元素的迭代器,若不存在则返回end()
```
- **修改(Updating)**:
```cpp
if (it != myMultimap.end()) {
it->second = "new_value"; // 修改对应键的值
}
```
请注意,在实际应用中,你需要包含头文件`<map>`或`<unordered_map>`取决于是否需要顺序访问。同时,`find`、`insert`等操作的时间复杂度通常是O(log n),n是映射中的元素数量。
阅读全文