【常用技巧】标准模板库

【常用技巧】标准模板库(STL)

在前几个章节中我们已经使用了诸如队列、堆、堆栈、vector 等标准模板库中的模板,切身感受到了它给我们带来的极大便利。在本节中,我们还要介绍两种标准模板——string 和 map,了解他们又会给我们带来怎样的便利。

string 对象,顾名思义即用来保存和处理字符串的标准模板。我们介绍其相关的操作。

例 8.1 字符串的查找删除 

时间限制:1 秒   内存限制:32 兆 

题目描述

给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。

输入

输入只有 1 组数据。 输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。

输出

删除输入的短字符串(不区分大小写)并去掉空格,输出。

样例输入

in 
#include 
int main() 
{ 
 

printf(" Hi ");
}

样例输出

#clude 
tma() 
{ 
 

prtf("Hi"); 
}

注:将字符串中的 In、IN、iN、in 删除。 

解题代码

#include<cstdio>
#include<string>
#include<iostream>
#include<ctype.h>

using namespace std;

int main()
{
    char str[101];
    gets(str);//输入短字符串
    string a = str;//将其保存在a中
    for (int i = 0; i < a.size(); i++)a[i] = tolower(a[i]);//将a中的字符全部改成小写
    while (gets(str))//输入长字符串
    {
        string b = str, c = b;//将字符串保存至b,c
        for (int i = 0; i < b.size(); i++)b[i] = tolower(b[i]);//将b中的字符全部改成小写,以便匹配
        int t = b.find(a, 0);//在b中查找a的位置
        while (t != string::npos)//若查找成功,则重复循环
        {
            c.erase(t, a.size());//删除c中相应位置字符,c为原串
            b.erase(t, a.size());//删除b中相应位置字符,b是改为小写字符的串
            t = b.find(a, t);//继续查找b中下一个出现字符串a的位置
        }
        t = c.find(" ", 0);//查找c中的空格
        while (t != string::npos)
        {
            c.erase(t, 1);
            t = c.find(" ", 0);
        }//删除c中所有空格
        cout << c << endl;
    }
    return 0;
}

上面我们主要讨论了string在机试中的用途,接下去我们还要介绍标准模板库中另一个十分实用的标准对象——map。 其功能为将一个类型的变量映射至另一类型。我们用一个例题,介绍和展示其用处和用法。

例 8.2 产生冠军

时间限制:1 秒   内存限制:32 兆 

题目描述

有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛。
球赛的规则如下:如果 A 打败了 B,B 又打败了 C,而 A 与 C 之间没有进行过比赛,那么就认定,A一定能打败 C。

如果 A 打败了 B,B 又打败了 C,而且,C 又打败了 A,那么 A、B、C 三 者都不可能成为冠军。

根据这个规则,无需循环较量,或许就能确定冠军。你的任务就是面对一群比赛选手,在经过了若干场撕杀之后,确定是否已经实际上产生了冠军。

输入

输入含有一些选手群,每群选手都以一个整数 n(n<1000)开头,后跟 n 对选手的比赛结果,比赛结果以一对选手名字(中间隔一空格)表示,前者战胜后者。 如果 n 为 0,则表示输入结束。

输出

对于每个选手群,若你判断出产生了冠军,则在一行中输出“Yes”,否则在一行中输出“No”。

样例输入

3 
Alice Bob 
Smith John 
Alice Smith
5 
a c 
c d 
d e 
b e 
a d 
0 

样例输出

Yes 
No 

解题代码

学完图之后再来写。

猜你喜欢

转载自www.cnblogs.com/yun-an/p/11076162.html
今日推荐