set-概述:
set c |
產生一個空的set/multiset,其中不含任何元素 |
set c (op) |
以op為排序準則,產生一個空的set/multiset |
set c1(c2) |
產生某個set/multiset的副本,所有元素均被復制 |
set c (beg, end) |
以區間[beg; end]內的元素產生一個set/multiset |
set c (beg, end, op) |
以op為排序準則,利用[beg; end]內的元素生成一個set/multiset |
c.~ set () |
銷毀所有元素,釋放內存 |
iterator begin() iterator end() |
返回指向第一個元素的迭代器 返回指向末尾(最后一個元素之后)的迭代器 |
void clear() |
清空set容器 |
bool empty() |
如果為空返回true,否則返回false |
iterator insert(TYPE &val ) |
插入一個元素,返回新元素的位置 |
iterator insert(iterator pos, TYPE &val) |
插入一個元素,返回插入元素的位置(pos是一個提示,指出插入操作的搜尋起點。如果提示恰當,可大大加快速度) |
void insert(input_iterator start, input_iterator end ) |
插入[start, end)之間的元素到容器中 |
void erase(iterator pos) void erase(iterator start, iterator end) size_type erase(const TYPE &val) |
刪除pos所指元素 刪除[start, end)之間的元素 刪除值為val的元素并返回被刪除元素的個數 |
size_type count(const TYPE &val) |
查找容器中值為val的元素的個數 |
iterator find(const TYPE &val) |
返回一個迭代器指向鍵值為val的元素,如果沒有找到就返回end() |
size_type size() |
返回元素的數量 |
void swap(set &object) |
交換兩個鏈表中的元素 |

#include <iostream> #include <cstring> #include <cstdio> #include <cstdlib> using namespace std; char *a[10000]; char b[10000]; int main() { while (gets(b) && b[0] !='#') { int flag = 0; char *p = b; int i = 0; int num = 0; memset(a, 0 ,sizeof(a)); while ( (a[i] = strtok(p, " ")) != NULL) { i ++; p = NULL; } for (int j = 0; j<i; j++) { num = 0; for (int k = j+1; k<i; k++) { if (strcmp(a[j],a[k]) == 0) num++; } if (num != 0) flag ++; } cout << i-flag<< endl; } return 0; }
有人用map解的:

#include<map> #include<string> #include<iostream> using namespace std; int main(){ string s; map<string,int>Map; while(getline(cin,s)&&s!="#") { int a=0; string str; Map.clear(); int len=s.length(); for(int i=0;i<len;i++){ if(s[i]=='#') break; str.clear(); while(s[i]>='a'&&s[i]<='z'){ str+=s[i]; i++; a=1; } if(a==1) { Map[str]++; a=0; } } int ans=Map.size(); cout<<ans<<endl; } return 0; }
不過, 草灘小恪感覺此題還是用set切, 切的更清晰, 更爽些!

#include<iostream> #include<string> #include<sstream> #include<set> using namespace std; const int MAXN = 100000; char line[MAXN]; int main() { set<string>s; while(cin.getline(line, MAXN)) { if(line[0]=='#') break; s.clear(); stringstream ss(line); string str; while(ss>>str) s.insert(str); cout<<s.size()<<endl; } return 0; }
文章列表