关于C++的STL中的copy函数解决方法

关于C++的STL中的copy函数
#include <iostream>
#include <vector>
#include <algorithm>

int main()
{
using namespace std;

vector<int> a, b;
b.push_back(1);
b.push_back(2);
b.push_back(3);
cout<<"b's size is "<<b.size()<<endl;
  copy(b.begin(), b.end(), a.end());
cout<<"a's size is "<<a.size()<<endl;

return 0;
}
我试验一个很简单的代码,就是将b中的元素复制到a中,如上述代码,但是每次运行时都出错(vc6.0和vc2008都试过),不知是什么原因,请高手指点!

------解决方案--------------------
a没有元素长度为0.。。怎么复制过去?
------解决方案--------------------
copy(b.begin(), b.end(), a.end());//a.begin()
------解决方案--------------------
标准库算法从来不做修改容器大小的操作,如果想在算法中改变容器的大小,需要用迭代器适配器 -- back_inserter