C++求高手帮忙

来源:百度知道 编辑:UC知道 时间:2024/06/24 05:13:39
#include <iostream>
using namespace std;
#include <vector>
#include <algorithm>
#include <iterator>
typedef vector<int> vecInt;
int main()
{
istream_iterator<int> in_iter(cin);
istream_iterator<int> eof;
vector<int> vec(in_iter,eof);
return 0;
};其中vector<int> vec(in_iter,eof);这样初始化为什么不行啊?
但是我调试的时候,显示有一个错误啊!你编辑器的问题吗?
我调试了一下,显示
Compiling...
1.cpp
f:\c++\chapt8\5\1.cpp(11) : error C2664: '__thiscall std::vector<int,class std::allocator<int> >::std::vector<int,class std::allocator<int> >(unsigned int,const int &,const class std::allocator<int> &)' : cannot convert parameter 1 from 'class std::
istream_iterator<int,char,struct std::char_traits<char> >' to 'unsigned int'
No user-defined-conversion operator available that can perform this conversion, or

这样初始化是可以的。in_iter这个对象会指向输入流的开始,而eof是调用默认的构造函数生成的对象,它会指向最后一个元素的后面一个位置。也就是构成了[fisrt,last)的范围。

当你在运行你这段代码时你输入数据时要是程序会正常结束,你可以直接从键盘输入一长串的数字流例如:1232432432433435,之后回车。
也可以每输入一个数据后敲回车换行,但是在Windows下面想要你的程序结束的话你的同时按住Ctrl+Z键,回车后才会结束!
补充回答:
真的没有错误,现在的编译器基本上都支持标准的C++了。如果你想完成同样的功能的话也可以使用下面的代码,同样要Ctrl+Z键,回车后才会结束!
#include<iostream>
#include<algorithm>
#include<iterator>

#include<vector>

using namespace std;

int main()
{

vector<int> v;

copy(istream_iterator<int>(cin),istream_iterator<int>(),back_inserter(v));

copy(v.begin(),v.end(),ostream_iterator<int>(cout, " "));

getchar();
return 0;
}

在我的编译器上的结果:

========== 生成: 0 已成功, 0 已失败, 1 最新, 0 已跳过 ==========
32
323
76
767
^Z
请按任意键继续. . .

程序没有问题,是编译器的原因。VC6.0 对STL支持不是太好。