标题:C++编译出错,来帮帮我吧
只看楼主
hhcxx2006
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2011-11-14
结帖率:50%
已结贴  问题点数:20 回复次数:5 
C++编译出错,来帮帮我吧
要求是:
编写一个函数模板, 取const vector 参数并根据vector是否正向逆向都一样而返回true和false值;编写main程序来测试该函数。最后报错了,现在初学stl,请教各位


#include<iostream>
#include<vector>
using namespace std;
template <class T>
bool hanshu(const vector<T> &v1)
{
    vector<T>::reverse_iterator j;
    vector<T>::iterator i;
    for(i=v1.begin();i!=v1.end();i++)
    {
        if(*i==*j)
        {
            j++;
        }
        else
        {
            return false;
        }
    }
    return true;
}

void main()
{
    vector<int> v;
    v.push_back(1);
    v.push_back(2);
    v.push_back(3);
    v.push_back(2);
    v.push_back(3);
    if(hanshu(v))cout<<"true";
    else cout<<"false";

}



[ 本帖最后由 hhcxx2006 于 2013-7-2 19:55 编辑 ]
搜索更多相关主题的帖子: include return false 
2013-07-02 08:42
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
得分:20 
程序代码:
#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;
template <class T>
bool hanshu(const vector<T> &v1)
{
    vector<T>::const_reverse_iterator j;
    vector<T>::const_iterator i;
    for(j=v1.rbegin();j!=v1.rend();j++)
        for(i=v1.begin();i!=v1.end();i++)
        {
            if(*i==*j)
            {
                j++;
            }
            else
            {
                return false;
            }
        }
        return true;
}

void main()
{
    vector<int> v;
    v.push_back(1);
    v.push_back(2);
    v.push_back(3);
    v.push_back(2);
    v.push_back(3);
    if(hanshu(v))cout<<"true";
    else cout<<"false";

}

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-07-02 10:29
hhcxx2006
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2011-11-14
得分:0 
回复 2楼 peach5460
为什么一定要加一个const呢?这里面有什么规则吗
2013-07-02 10:47
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
得分:0 
回复 3楼 hhcxx2006
翻书,primer的迭代器那一章有写
const是一个修饰符,一边加了一边没加,会造成类型不匹配

而且你的编译器应该提示很清楚
错误    1    error C2679: 二进制“=”: 没有找到接受“std::_Vector_const_iterator<_Ty,_Alloc>”类型的右操作数的运算符(或没有可接受的转换)

[ 本帖最后由 peach5460 于 2013-7-2 11:20 编辑 ]

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-07-02 11:17
hhcxx2006
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2011-11-14
得分:0 
回复 4楼 peach5460
好的,我们的教材讲stl讲得很简单,所以不太会
2013-07-02 11:20
jiaol2013
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-6-24
得分:0 
2013-07-02 17:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-416487-1-1.html




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

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