| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1292 人关注过本帖
标题:size_t i = 0与迭代器一起在for语句头定义时出现错误
只看楼主 加入收藏
snowstorm
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2008-10-12
收藏
 问题点数:0 回复次数:2 
size_t i = 0与迭代器一起在for语句头定义时出现错误
// 编写程序由从标准输入设备读入的元素数据建立一个 int型 vector对象,然后
//动态创建一个与该 vector 对象大小一致的数组,把 vector 对象的所有元素复
//制给新数组。
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector <int> ivec;
    int inum;
    cout << "请输入一个整形数组以ctrl+z结束:" ;
    // 从键盘读入数据
    while (cin >> inum)
    {
        ivec.push_back(inum);
    }

    const int arry_size= ivec.size();

    int *ip = new int[arry_size];
    size_t i = 0;  // 为什么i要在外面定义才可以,若是在for的语句头定义就有错误呢?
    cout << "数组的个元素为:"
    for (vector <int>::iterator ix = ivec.begin(); ix != ivec.end(); ++ix)
    {
        ip[i] = *ix;
        cout << ip[i] << " "; //将容器里面的内容复制到动态数组里
        ++i;
    }
    delete [] ip;
    cout << endl;
    return 0;
}
注:不用告诉我可以不用这种方法,我只想知道出现这种情况是为什么 呵呵
搜索更多相关主题的帖子: 语句 定义 size 
2008-10-17 16:56
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:0 
由于模板的原因,如果你这样写
for ( size_t i = 0 ,vector <int>::iterator ix = ivec.begin(); ix != ivec.end(); ++ix)
编译器会认为那个','号是在说,后面还有一个size_t的变量'vector <int>::iterator',
如果你这样写:
for ( vector <int>::iterator ix = ivec.begin() , size_t i = 0 ; ix != ivec.end(); ++ix)
同样会认为size_t是一个变更名.
for循环中可以定义多个变量,但类型一定是一样的,这样写
for( size_of i=0,j=0 ; ; )
关键在于那个逗号的语义.是指接着前面的声明类型接着再声明一个变量.
2008-10-17 23:08
snowstorm
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2008-10-12
收藏
得分:0 
谢谢 十分感谢 很抱歉这么晚才回复谢谢
2008-10-18 21:13
快速回复:size_t i = 0与迭代器一起在for语句头定义时出现错误
数据加载中...
 
   



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

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