| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 773 人关注过本帖
标题:帮我看看函数模板
只看楼主 加入收藏
kscooh1
Rank: 2
等 级:论坛游民
帖 子:53
专家分:25
注 册:2011-8-8
结帖率:90%
收藏
已结贴  问题点数:20 回复次数:4 
帮我看看函数模板
--------------------Configuration: 函数模板 - Win32 Debug--------------------
Compiling...
median.cpp
F:\C语言加深\C++\函数模板\median.cpp(3) : error C2143: syntax error : missing ',' before '<'
F:\C语言加深\C++\函数模板\median.cpp(3) : error C2059: syntax error : '<'
Skipping... (no relevant changes detected)
16-27.cpp
执行 cl.exe 时出错.

函数模板.exe - 1 error(s), 0 warning(s)
代码如下:
程序代码:
//median.cpp
template<typename T>
bool median(const vector<T>&c,T&m)
{
    vector<T> temp(c);

    if(temp.size()%2==0)
        return false;

    sort(temp.begin(),temp.end());

    vector<T>::size_type index=temp.size()/2;
    if(temp[index]>temp[index-1]&&temp[index]<temp[index-1])
    {
        m=temp[index];
        return true;
    }
    else
        return false;
}
搜索更多相关主题的帖子: relevant warning before C语言 
2011-12-06 15:55
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:7 
难道没有#include <vector>?如果是,那就欠抽了。以下代码在gcc4.6.1和vc++9.0下都编译运行通过
程序代码:
#include <algorithm>
#include <vector>
using namespace std;

template<typename T>
bool median( const vector<T>& c, T& m )
{
    vector<T> temp(c);

    if( temp.size()%2 == 0 )
        return false;
    if( temp.size() == 1 )
    {
        m = c[0];
        return true;
    }

    sort( temp.begin(), temp.end() );

    typename vector<T>::size_type index = temp.size()/2;
    if(temp[index]>=temp[index-1] && temp[index]<=temp[index+1])
    {
        m = temp[index];
        return true;
    }

    return false;
}

#include <iostream>

int main()
{
    vector<int> c;
    c.push_back( 4 );
    c.push_back( 3 );
    c.push_back( 5 );

    int m;
    median( c, m );
    cout << m << endl;

    return 0;
}

2011-12-06 16:58
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
顺便说一句,找中值肯定不需要全部排序,因此使用sort是不对的。
stl中已有这样的函数,名字叫 nth_element
2011-12-06 17:00
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
收藏
得分:7 
函数没问题啊。
2011-12-07 08:21
共和国鹰派
Rank: 3Rank: 3
来 自:山东
等 级:论坛游侠
帖 子:37
专家分:119
注 册:2011-10-20
收藏
得分:7 
如果不使用如二楼所加的typename的话则会将size_type认为是vector<T>的一个静态成员所以出现这个错误
2011-12-07 13:27
快速回复:帮我看看函数模板
数据加载中...
 
   



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

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