| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 736 人关注过本帖
标题:[求助]写个count模板函数!
取消只看楼主 加入收藏
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
 问题点数:0 回复次数:3 
[求助]写个count模板函数!
template<class InputIterator, class T> inline
size_t count(
InputIterator First,
InputIterator Last,
const T& Value
)

上面这个是stl中count函数的原型!
哪位大哥写下,怎么实现在一对迭代器中数指定元素出现次数。当然用模板哦!

我写出来的,但是有问题,在dev-cpp中可以运行,在vs2005中报错。
先看看别人怎么写!
谢谢了!
搜索更多相关主题的帖子: count 函数 模板 
2007-06-12 10:54
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
回复:(aipb2007)[求助]写个count模板函数!

你们的都可以!
这个是我的:
#include <iostream>
#include <string>
#include <vector>
using namespace std;

template<typename tcon,typename tval>
size_t count(typename tcon::iterator fir,typename tcon::iterator sec,
const tval &key){
size_t i = 0;
for (;fir != sec;++fir)
if (*fir == key)
++i;
return i;
}

int main(){
vector<string> svec;
string temp;
while (cin >> temp)
svec.push_back(temp);
size_t i = count(svec.begin(),svec.end(),string("love"));
cout << i << endl;
system("pause");
return 0;
}

你们都把迭代器直接作为类型参数去操作,我觉得是把容器类型作为模板参数,再用typename去指定迭带器,去作为形参。

究竟这个模板参数怎么去选择?我有点迷惑了!你们怎么就不约而同的这样去实现呢?

还有,我这个在dev-cpp里是可以的,但是在2005里不行!
这又是为什么!


Fight  to win  or  die...
2007-06-12 13:41
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
回复:(wfpb)因为你的::iterator约束了数组无法被使...

恩,有道理,大概懂些了!

最后就是为什么在dev里可以通过,在2005里不可以呢?

我觉得我写的没错啊,光就代码说!


Fight  to win  or  die...
2007-06-12 14:58
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
恩!!!
再研究研究!呵呵!

thanks!

Fight  to win  or  die...
2007-06-12 15:42
快速回复:[求助]写个count模板函数!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024786 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved