**2025 - 01 - 25 - 第 48 篇
【函数的使用】
作者(Author)
文章目录
- `earse()` - 删除函数
- 一. `vector`中的 `erase`
- 1 移除单个元素
- 2 移除一段元素
- 二. map 中的`erase`
- 1 通过键移除元素
- 2 通过迭代器移除元素
earse()
- 删除函数
一. vector
中的 erase
vector
是一个动态数组,erase
可以移除指定位置或指定范围的元素
1 移除单个元素
numbers.begin()
返回指向vector
第一个元素的迭代器。numbers.begin() + 2
指向索引为 2 的元素。erase
函数移除该元素,后续元素会自动向前移动填补空位。
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
// 移除索引为2的元素(即数字3)
numbers.erase(numbers.begin() + 2);
for (int num : numbers) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
2 移除一段元素
erase
的第一个参数是起始位置,第二个参数是结束位置(不包含该位置的元素)。- 这里移除了索引为 1 和 2 的元素。
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
// 移除从索引1到索引3(不包含索引3)的元素
numbers.erase(numbers.begin() + 1, numbers.begin() + 3);
for (int num : numbers) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
二. map 中的erase
map
是一个关联容器,存储键值对,erase
可以通过键或迭代器移除元素。
1 通过键移除元素
- 传入要移除元素的键,
erase
会查找并移除该键对应的键值对。
#include <iostream>
#include <map>
int main() {
std::map<char, int> myMap = {{'a', 1}, {'b', 2}, {'c', 3}};
// 通过键 'b' 移除元素
myMap.erase('b');
for (const auto& pair : myMap) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
2 通过迭代器移除元素
- 先使用
find
函数找到要移除元素的迭代器。 - 若找到,使用
erase
函数通过迭代器移除该元素。
#include <iostream>
#include <map>
int main() {
std::map<char, int> myMap = {{'a', 1}, {'b', 2}, {'c', 3}};
// 找到键为 'b' 的元素
auto it = myMap.find('b');
if (it != myMap.end()) {
// 通过迭代器移除元素
myMap.erase(it);
}
for (const auto& pair : myMap) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}