[STL] UVA 10815 安迪的第一個字典 Andy's First Dictionary

一、set

集合 哦....對了,set有自動按照字典序排序功能。。。。。ios

聲明和插入操做

#include <cstdio>
#include <vector>
#include <set>
using namespace std;
int main(){
        vector<int> v;
        for (int i = 0; i < 10; i++)
        {
                v.push_back(i);
                v.push_back(i);
        }
        set<int> s;
        s.insert(v.begin(), v.end());
        //由於是集合,因此重複的元素不會被重複插入
        for (set<int>::iterator it = s.begin(); it != s.end(); it++)
                printf("%d\n", *it);
        printf("\n");
        return 0;
}

 

刪除操做

這個通常都用的是erase()--->刪除指定的元素或者刪除指定部分的元素 和 clear()--->清除全部元素 操做以下:函數

    set<int> s;
    s.erase(2);        
    s.clear();

 

查找操做

set支持upper_bound() lower_bound() find()等操做 舉個例子:spa

   set<int> s;
   set<int>::iterator it;
   it = s.find(5);    //查找鍵值爲5的元素
   if (it != s.end())    //找到了 
   cout << *it << endl;

 

二、isalpha()

判斷字符ch是否爲英文字母,若爲英文字母,返回非0(小寫字母爲2,大寫字母爲1)。若不是字母,返回0。 具體用法見下code

三、stringstream()

輸入輸出轉換操做 具體用法見下blog

四、tolower()

是一種函數,功能是把字母字符轉換成小寫,非字母字符不作出處理。 具體用法見下排序

下面是該題代碼:ci

  

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<sstream>
#include<set>
using namespace std;
set<string>aa;
string s,cur;
int main(){
    std::ios::sync_with_stdio(false);
    while(cin>>s)
    {
        for(int i=0;i<s.length();i++)
        {
            if(isalpha(s[i]))  s[i]=tolower(s[i]);
            else s[i]=' ';
        }
        stringstream ss(s);
        while(ss>>cur)  
            aa.insert(cur);
    }
    for(set<string>::iterator it=aa.begin();it!=aa.end();it++)
    {
        cout<<*it<<endl;
    }
    return 0;
}
相關文章
相關標籤/搜索