习题9.27

Exercise 9.27:

Write a program to process a list of strings. Look for a particular value and, if found, remove it. Repeat the program using a deque.

编写程序处理一个 string 类型的 list 容器。在该容器中寻找一个特殊值,如果找到,则将它删除掉。用 deque 容器重写上述程序。


#include<iostream>
#include<string>
#include<list>
#include<deque>

using namespace std;

int main()
{
	string tempValue;
	string searchValue;
	list<string> my_list;
	int exist_tap = 0; //表示是否存在要删除的元素,默认为0不存在

	cout <<"input string list, Ctrl+z to end" <<endl;
	while(cin >>tempValue)
	{
		my_list.push_back(tempValue);
	}
	cin.clear();
	cout <<"input string for searching and deleting" << endl;
	cin>>searchValue;

	list<string> ::iterator list_iter = my_list.begin();
	while(list_iter != my_list.end())
	{
		if(searchValue == *list_iter)
		{
			list_iter = my_list.erase(list_iter);
			exist_tap = 1;
			if(list_iter != my_list.begin())
			{
			    list_iter--; //迭代器减1,使其指向下一个元素
			}
			else
			{
				continue;//如果刚好是begin,则不能减1
			}
		}
		list_iter++;

	}
	if(0 == exist_tap)
	{
		cout <<"there is no string "<<searchValue << " in the input"<< endl;
		goto Pause;
	}
	cout <<"the new string is:" << endl;
	for(list_iter = my_list.begin(); list_iter != my_list.end(); list_iter++)
	{
		cout << *list_iter <<" ";
	}
	cout<<endl;
Pause:	system("pause");
	return 0;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值