您的位置:首页 > 其它

hdu 2072 单词数,set,strtok

2014-09-22 16:33 316 查看
STL_set操作:


st.begin()

返回指向第一个元素额迭代器

st.end()

返回指向末尾元素的迭代器

st.rbegin()

返回逆向迭代器,指向链表末尾

st.rend()

返回指向开头之前位置的迭代器

st.clear()

清空迭代器

st.count(key_type key)

返回某个值元素的个数

st.empty()

如果为空,返回true

st.size()

返回元素的数量

st.swap()

交换两个集合变量

st.insert(val)

st.insert(loc, val)

st.insert(start, end);

插入val元素,并返回指向该元素的迭代器和一个布尔值来说明val是否成功的被插入了。
在迭代器loc前插入val,并返回一个指向该元素的迭代器;
将迭代器start开始到end结束返回内的元素插入到集合中;
st.erase(loc)

st.erase(start,end)

st.erase(key_type key)

删除loc所指元素

删除[start,end)之间的元素

删除key值为value的元素,并返回删除的个数

st.find(key_type key)

返回一个迭代器指向键值为key的元素,未找到返回end()

pair<iterator start, iterator end> equal_range(const key_type &key)

查找键值等于key的元素区间为[start, end),指示范围的两个迭代器以pair返回

st.lower_bound(key_type key)

st.upper_bound(key_type key)

返回一个迭代器指向>=key的第一个元素

返回一个迭代器,指向>key的第一个元素

strtok函数
#include <string.h>

char *strtok( char *str1, constchar *str2 );

功能:函数返回字符串str1中紧接“标记”的部分的指针,字符串str2是作为标记的分隔符。如果分隔标记没有找到,函数返回NULL。为了将字符串转换成标记,第一次调用str1指向作为标记的分隔符。之后所以的调用str1都应为NULL。

int main() {

char str[] = "smart,calm,luck";

char *p; p = strtok(str, ",");

while(p){

printf("%s\n", p);

p = strtok(NULL, ",");

}

return 0;

}

运行结果:

smart

calm

luck

题意:

统计一篇文章里不同单词的总数。

Sample Input

you are my friend

you are my friend you are my friend

#

Sample Output

4

4

#include <cstdio>
#include <cstring>
#include <set>
#include <string>
#include <iostream>
using namespace std;

set<string> dict;

int main()
{
    char str[10000];
    string s;
    while(gets(str)){
        if(str[0]=='#') break;
        dict.clear();
        char *p; p = strtok(str," ");
        while(p){
            s = p;
            dict.insert(s);
            p = strtok(NULL," ");
        }
        printf("%d\n", dict.size());
    }
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: