| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1317 人关注过本帖
标题:请问一下vector 迭代器的用法
只看楼主 加入收藏
alfred_shi
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-4-5
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
请问一下vector 迭代器的用法
本人菜鸟一个,我的编程环境时VC++ Express 2008(免费的那个)。

我正在做c++ primer上的一道习题,其中要求输入输出vector。

我的代码如下
----------------------------------
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>

using std::cout;
using std::cin;
using std::endl;
using std::string;
using std::vector;

int main()
{
    vector<long> v1, v2;
    int i;
    int j;
    string yesno,verify;
    long long_verify;

    cout<<"Please enter your vector 1. Type END to finish."<<endl;

    for(i=0;;i++)  
    {
    A:;    
        cin>>verify;   
        //If type "end", finish the input.(可以输入任意数量的元素,直到输入end结束)   
        if((verify=="END")||(verify=="end")||(verify=="End"))
        {
            break;   
        }   
        //To verify if all the characters input are digital numbers.(这段代码用于检测是否输入的全部元素是数字,除非是end,否则如果不是就报错,要求重新输入。)
        for(j=0;j!=verify.size();j++)   
        {   
            if (!(isdigit(verify[j])))   
            {        
                cout<<"ERROR! You must enter an integral!"<<endl;   
                goto A;    
            }
        }

        //After then, give the value verified to vector.(检测完毕,确认全部是数字后才转成long型,输入到vector。因为我发现在VC++ Express下一旦输入个非数字给int或long就会立刻造成程序错乱。)
        long_verify = atol(verify.c_str());      //Transfer STRING to LONG
        v1.push_back(long_verify);         //Give value to vector 1
    }
    //(这段用于输出整个vector)
    cout<<"The veccor 1 is "<<endl;
    for(i=0;i!=v1.size();i++)
    {
        cout<<v1[i]<<" ";
    }
    cout<<"\n";
    return 0;
}
--------------------------------------


我想要的功能都实现了。但是,我有两个问题:

1 C++ Primer教材上说,如果可以的话,尽量使用迭代器。但我试过,一用迭代器后,可以编译,但运行后输入第一个数字元素后就出错。有谁能告诉我,这段程序改成迭代器的话应该怎么用?
2 这段程序我其中用了一个并不太受欢迎的goto(红色字标出来了),请问有没有替代方法?

谢谢

谢谢。


[ 本帖最后由 alfred_shi 于 2010-4-5 19:58 编辑 ]
搜索更多相关主题的帖子: 用法 vector 
2010-04-05 19:56
yyblackyy
Rank: 6Rank: 6
等 级:侠之大者
帖 子:98
专家分:457
注 册:2010-3-31
收藏
得分:20 
string yesno,verify; 这里的yesno 没有用到
vector<long> v1, v2;  v2 也没有用到

goto 给成continue;就可以了
vector<long>::iterator iter=v1.begin();
在输入的时候就用 v1 吧
输出时该成
for(;iter!=v1.end();iter++)           也就是简单了一点而已~~
    cout<<*iter;
2010-04-06 13:30
快速回复:请问一下vector 迭代器的用法
数据加载中...
 
   



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

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