小编nat*_*soz的帖子

STL vector reserve()和copy()

问候,

我试图使用以下2个缩写的代码行(从下面的完整测试应用程序)执行从一个向量(vec1)到另一个向量(vec2)的副本:

vec2.reserve( vec1.size() );
copy(vec1.begin(), vec1.end(), vec2.begin());
Run Code Online (Sandbox Code Playgroud)

虽然对vec2的调用设置了向量vec2的容量,但是将数据复制到vec2似乎没有填写从vec1到vec2的值.

用push_back()调用替换copy()函数按预期工作.

我在这里错过了什么?

谢谢你的帮助.然后是结果输出的vectest.cpp测试程序.

编译器:关于cygwin的gcc 3.4.4.

纳特

/**
 * vectest.cpp
 */

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int> vec1;
    vector<int> vec2;

    vec1.push_back(1);
    vec1.push_back(2);
    vec1.push_back(3);
    vec1.push_back(4);
    vec1.push_back(5);
    vec1.push_back(6);
    vec1.push_back(7);

    vec2.reserve( vec1.size() );
    copy(vec1.begin(), vec1.end(), vec2.begin());

    cout << "vec1.size()     = " << vec1.size() << endl;
    cout << "vec1.capacity() = " << vec1.capacity() << endl;

    cout << "vec1: ";
    for( vector<int>::const_iterator iter = vec1.begin(); iter < vec1.end(); ++iter ) {
        cout …
Run Code Online (Sandbox Code Playgroud)

c++ stl vector stl-algorithm

18
推荐指数
3
解决办法
2万
查看次数

标签 统计

c++ ×1

stl ×1

stl-algorithm ×1

vector ×1