注册 登录
编程论坛 C++教室

小问题:copy(v.begin(),v.end(),u.end());

longlao 发布于 2008-09-05 21:41, 1188 次点击
题目是这样的  它问
vector<int> v(10,100);
vector<int> u;
copy(v.begin(),v.end(),u.begin());

就是把v复制到u里拉
但我写
#include<iostream>
#include<vector>
#include<algorithm>
#include<iterator>
using namespace std;
int main()
{
    vector<int> v(10,100);
    vector<int> u;
    copy(v.begin(),v.end(),u.begin());
    vector<int>::iterator it=u.begin();
    for(;it!=u.end();it++)
    {
        cout<<*it<<endl;
    }
    return 0;
}
我想结果是10个100,但运行后出错,别人告诉我是,但u没有足够空间  
要我用使用插入迭代器,我把u.begin()换成back_inserter(u)后运行成功了
但我还是不懂为什么u没有足够空间,是从u.begin()开始插入啦,难道u的空间是0?
还有,如果我非要用题目中的那段程序写应该怎样写呢??
3 回复
#2
renhao1532008-09-06 22:34
你所定义的u是初始值为NULL的VECTOR<INT>能用*.INSERT(P,B,E)的方法插入或者是调整vector<int> u容器的大小 u.resize(10)在用copy()的方法你试一下
#3
blueboy820062008-09-07 12:05
原因,就是 vector<int> u;
u默认初始化为空啊....
copy()时必须保证u的空间不小于v的...否则就是个运行错误...
你设一下u的大小,或简单地给个初值,像这样,    vector<int> u(10,0);
就好了...
#4
longlao2008-09-11 22:41
谢谢
1