C++98 std::vector 遍历和删除指定元素
C++98 std::vector 遍历和删除指定元素
在 C++98 中,可以使用迭代器来遍历和删除 std::vector 中的指定元素。以下是使用迭代器遍历和删除指定元素的示例代码:c++#include
struct tag_ClientCBS { int id; std::string name;};
int main() { std::vector<tag_ClientCBS> cbs_vec;
// 添加一些元素到向量中 cbs_vec.push_back({1, 'Client 1'}); cbs_vec.push_back({2, 'Client 2'}); cbs_vec.push_back({3, 'Client 3'}); cbs_vec.push_back({4, 'Client 4'}); cbs_vec.push_back({5, 'Client 5'});
// 遍历向量并输出元素 std::vector<tag_ClientCBS>::iterator it; for (it = cbs_vec.begin(); it != cbs_vec.end(); ++it) { std::cout << 'ID: ' << it->id << ', Name: ' << it->name << std::endl; }
// 删除指定元素(例如,删除ID为3的元素) for (it = cbs_vec.begin(); it != cbs_vec.end(); ++it) { if (it->id == 3) { cbs_vec.erase(it); break; // 删除后立即退出循环,避免无效的迭代器访问 } }
// 再次遍历向量并输出元素 std::cout << 'After deletion:' << std::endl; for (it = cbs_vec.begin(); it != cbs_vec.end(); ++it) { std::cout << 'ID: ' << it->id << ', Name: ' << it->name << std::endl; }
return 0;}
代码解释:
- 包含头文件:
iostream用于输入输出,vector用于使用std::vector容器。2. 定义结构体:tag_ClientCBS结构体表示要存储在向量中的元素类型。3. 创建向量:cbs_vec是一个存储tag_ClientCBS结构体的向量。4. 添加元素: 使用push_back()方法向向量中添加元素。5. 遍历向量: 使用迭代器it遍历向量,并使用it->访问结构体成员。6. 删除元素: 使用erase()方法删除指定元素。注意: 删除元素后,迭代器会失效,因此需要在删除后立即退出循环,或者使用erase()返回的新迭代器继续遍历。7. 再次遍历: 删除元素后,再次遍历向量并输出元素,验证删除操作的结果。
注意: C++11 引入了更简洁的语法来遍历和删除向量元素,例如基于范围的 for 循环和 remove_if 算法。
原文地址: https://www.cveoy.top/t/topic/fgxP 著作权归作者所有。请勿转载和采集!