C++中如何删除STL链表的元素元素类型为string
在C++中,可以使用STL链表的erase()函数来删除元素。对于元素类型为string的链表,可以按照以下步骤进行删除操作:
- 定义一个链表对象:
std::list<std::string> myList;
- 向链表中添加元素:
myList.push_back("element1");
myList.push_back("element2");
myList.push_back("element3");
- 使用
erase()函数删除指定元素:
std::list<std::string>::iterator it = myList.begin();
while (it != myList.end()) {
if (*it == "element2") {
it = myList.erase(it);
} else {
++it;
}
}
在上述代码中,首先定义一个迭代器it,它指向链表的第一个元素。然后,使用while循环遍历链表中的每个元素。如果当前元素等于需要删除的元素,就使用erase()函数删除该元素,并将迭代器指向下一个元素。否则,迭代器向前移动。
- 输出链表中的剩余元素:
for (const std::string& element : myList) {
std::cout << element << std::endl;
}
使用范围for循环遍历链表中的每个元素,并输出。
完整的代码示例如下:
#include <iostream>
#include <list>
#include <string>
int main() {
std::list<std::string> myList;
myList.push_back("element1");
myList.push_back("element2");
myList.push_back("element3");
std::list<std::string>::iterator it = myList.begin();
while (it != myList.end()) {
if (*it == "element2") {
it = myList.erase(it);
} else {
++it;
}
}
for (const std::string& element : myList) {
std::cout << element << std::endl;
}
return 0;
}
运行上述代码,输出结果为:
element1
element3
``
原文地址: http://www.cveoy.top/t/topic/iCdP 著作权归作者所有。请勿转载和采集!