c++ std::copy失败

#include <iostream>     // std::cout
#include <algorithm>    // std::copy
#include <vector>       // std::vector

template <typename T>
void func(std::vector<T> & in, std::vector<T> & out)
{
    std::copy ( in.begin(), in.begin()+7, out.begin() );
}

int main () {
    std::vector<int> myints={10,20,30,40,50,60,70};
    std::vector<int> myvector;

    myvector.reserve(7);
    func(myints, myvector);

    std::cout << "myvector contains:";
    for (std::vector<int>::iterator it = myvector.begin(); it!=myvector.end(); ++it)
        std::cout << ' ' << *it;

    std::cout << '\n';

    return 0;
}

以上代码参考自:http://www.cplusplus.com/reference/algorithm/copy
但copy在单独的函数内不生效是为什么呢?

阅读 3k
1 个回答
    myvector.reserve(7);
             ^^^^^^^
    func(myints, myvector);

reserve 是不行的,你需要 resize

reserve 只是分配的内存,但是 vector 里还没有元素。所以begin() == end() ,并且不可写。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题