首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >STL向量保留()和复制()

STL向量保留()和复制()
EN

Stack Overflow用户
提问于 2009-07-14 22:56:48
回答 4查看 23.9K关注 0票数 19

大家好,

我正在尝试使用以下两行简短的代码从一个向量(vec1)复制到另一个向量(vec2) (完整的测试应用程序如下所示):

代码语言:javascript
复制
vec2.reserve( vec1.size() );
copy(vec1.begin(), vec1.end(), vec2.begin());

虽然对vec2的调用设置了向量vec2的容量,但将数据复制到vec2似乎不会填充从vec1到vec2的值。

将copy()函数替换为对push_back()的调用可以正常工作。

这里我漏掉了什么?

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

编译器: cygwin上的gcc 3.4.4。

Nat

代码语言:javascript
复制
/**
 * 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 << *iter << " ";
    }
    cout << endl;

    cout << "vec2.size()     = " << vec2.size() << endl;
    cout << "vec2.capacity() = " << vec2.capacity() << endl;
    cout << "vec2: ";
    for( vector<int>::const_iterator iter = vec2.begin(); iter < vec2.end(); ++iter ) {
        cout << *iter << endl;
    }

    cout << endl;
}

输出:

代码语言:javascript
复制
vec1.size()     = 7
vec1.capacity() = 8
vec1: 1 2 3 4 5 6 7 
vec2.size()     = 0
vec2.capacity() = 7
vec2: 
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1128535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档