用C++语言怎么写插入删除查询表里面的元素
时间: 2024-09-10 22:23:45 浏览: 21
在C++中,插入、删除和查询表(通常指的是容器,比如标准模板库STL中的vector、list、map等)中的元素,需要根据你所使用的容器类型来决定具体实现方法。下面是针对几种常见容器的基本操作示例:
1. 对于顺序容器(如`vector`和`list`)的元素操作:
- 插入(Insertion):
```cpp
std::vector<int> vec;
// 使用push_back在vector末尾插入元素
vec.push_back(10);
// 使用insert在指定位置插入元素
vec.insert(vec.begin() + 5, 20); // 在第六个位置插入20
std::list<int> lst;
// 使用push_front在list开头插入元素
lst.push_front(10);
// 使用push_back在list末尾插入元素
lst.push_back(20);
// 使用insert在指定位置插入元素
lst.insert(lst.begin(), 30); // 在开头位置插入30
```
- 删除(Deletion):
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5};
// 使用erase删除指定位置的元素
vec.erase(vec.begin() + 2); // 删除第三个元素,即值为3的元素
// 使用remove_if和erase组合删除满足条件的元素
vec.erase(std::remove(vec.begin(), vec.end(), 4), vec.end()); // 删除所有值为4的元素
std::list<int> lst = {1, 2, 3, 4, 5};
// 使用erase删除指定位置的元素
lst.erase(lst.begin()); // 删除第一个元素,即值为1的元素
```
- 查询(Search):
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5};
// 使用find查询元素位置
auto it = std::find(vec.begin(), vec.end(), 3);
if (it != vec.end()) {
// 找到元素,可以进行后续操作
}
std::list<int> lst = {1, 2, 3, 4, 5};
// 使用find查询元素位置
auto it = std::find(lst.begin(), lst.end(), 3);
if (it != lst.end()) {
// 找到元素,可以进行后续操作
}
```
2. 对于关联容器(如`map`和`set`)的元素操作:
- 插入(Insertion):
```cpp
std::map<int, std::string> myMap;
// 使用insert插入单个键值对
myMap.insert(std::make_pair(1, "one"));
// 使用[]操作符插入键值对,如果键已存在,则更新值
myMap[2] = "two";
std::set<int> mySet;
// 使用insert插入单个元素
mySet.insert(1);
mySet.insert(2);
```
- 删除(Deletion):
```cpp
std::map<int, std::string> myMap = {{1, "one"}, {2, "two"}};
// 使用erase删除指定键的元素
myMap.erase(1);
std::set<int> mySet = {1, 2, 3, 4};
// 使用erase删除指定元素
mySet.erase(2);
```
- 查询(Search):
```cpp
std::map<int, std::string> myMap = {{1, "one"}, {2, "two"}};
// 使用find查询键对应的值
auto it = myMap.find(1);
if (it != myMap.end()) {
// 找到键,可以操作对应的值
}
std::set<int> mySet = {1, 2, 3, 4};
// 使用find查询元素是否存在
auto it = mySet.find(2);
if (it != mySet.end()) {
// 找到元素,可以进行后续操作
}
```