| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 514 人关注过本帖
标题:跟编译器有关?
只看楼主 加入收藏
未未来
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:182
专家分:157
注 册:2012-11-6
结帖率:94.87%
收藏
已结贴  问题点数:5 回复次数:6 
跟编译器有关?
程序代码:
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<iterator>    
using namespace std;
template <typename T>typename T::value_type mostFre(T first,T last){
    std::size_t amount=0;
    T start=first;
    while(start!=last){
        amount++;
        start++;
    }
typedef  std::vector<typename T::value_type>VecType;
VecType vec(amount);
VecType::iterator newFirst=vec.begin();
VecType::iterator newlLast=vec.end();
std::uninitialized_copy(first,last,newFirst);
std::sort(newFirst,newlLast);
std::size_t maxOccu=0,occu=0;
VecType::iterator preIter=newFirst;
VecType::iterator maxOccuElmIt=newFirst;
while(newFirst!=newLast){
    if(*newFirst!=*preIter){
        if(occu>maxOccu){
            maxOccu=occu;
            maxOccuElmIt=preIter;
        }
        occu=0;
    }++occu;
    preIter=newFirst;
++newFirst;
}

if(occu>maxOccu){
    maxOccu=occu;
    maxOccuElmIt=preIter;
}
return *maxOccuElmIt;

}
int main(){
        int ia[]={
                1 ,2,3, 4, 5, 1,2,3,1,7
        };
        vector<int>ve(ia,ia+10);
        vector<int>::iterator a=ve.begin(),b=ve.end();
        cout<<mostFre(a,b)<<endl;
        return 0;
}


这段代码在vc++6.0上编译出现了 error 2893,目测是因为编译器问题,
同时在cfree上编译也无法通过,

vc++6.0的编译错误信息:
--------------------Configuration: Cpp1 - Win32 Debug--------------------
Compiling...
1.cpp
D:\我的文档\新建文件夹\1.cpp(7) : error C2893: Failed to specialize function template 'generic-type-257 __cdecl mostFre(T,T)'
        With the following template arguments:
        'int *'
D:\我的文档\新建文件夹\1.cpp(7) : error C2146: syntax error : missing ';' before identifier 'mostFre'
D:\我的文档\新建文件夹\1.cpp(7) : error C2065: 'T' : undeclared identifier
D:\我的文档\新建文件夹\1.cpp(7) : error C2146: syntax error : missing ')' before identifier 'first'
D:\我的文档\新建文件夹\1.cpp(7) : error C2059: syntax error : ')'
执行 cl.exe 时出错.

1.obj - 1 error(s), 0 warning(s)


求老鸟指点看看,,遇到这样的问题很是蛋疼啊,
搜索更多相关主题的帖子: 编译器 
2013-05-29 20:40
未未来
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:182
专家分:157
注 册:2012-11-6
收藏
得分:0 
自己已经解决问题了,,
确实是被习题答案误导了

例如
VecType::iterator newFirst=vec.begin();

编译器无法得知 iterator 是一个数据成员还是类型成员
所以 需要

typename VecType::iterator newFirst=vec.begin();
来告诉编译器将成员当做类型。


我好棒
2013-05-29 22:04
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你好棒,把分给我吧。

授人以渔,不授人以鱼。
2013-05-29 22:25
青春无限
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江苏
等 级:贵宾
威 望:24
帖 子:3452
专家分:19340
注 册:2012-3-31
收藏
得分:0 
分分

学 会看代码…学习写程序…学会搞开发…我的目标!呵呵是不是说大话啊!!一切皆可能
2013-05-29 22:28
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:5 
接分

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-05-30 06:36
不要脸的猫
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:41
专家分:126
注 册:2012-6-20
收藏
得分:0 
容器类,还未接触过,感觉挺强大的!

埋骨何须桑梓地,人生无处不青山
2013-05-30 09:04
网赚论坛
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-5-31
收藏
得分:0 
不清楚

网赚论坛www。cnwangzhuan。com
2013-05-31 00:48
快速回复:跟编译器有关?
数据加载中...
 
   



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

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