有什么简洁方法把一个vector,变成为原来容器变量的两个连起来的新容器变量?

标题没说清楚。
其实很简单。假设我现有的容器为vec={1,2,3,4},我想把它变成{1,2,3,4,1,2,3,4}。
我想知道有没有什么直接的最发,或者自带的函数来实现这个功能。我所看的书上没有?
如果真的没有,我只能一个个push_back了

作者: chenhua8869   发布时间: 2011-06-15

就规规矩矩的做吧

作者: bdmh   发布时间: 2011-06-15

ms木有

作者: c_losed   发布时间: 2011-06-15

vector貌似没有 有些特殊容器貌似有 insert但是vector不支持

作者: hnuqinhuan   发布时间: 2011-06-15

vec.reserve( vec.size()*2 );
vec.insert( vec.end(), vec.bein(), vec.end() );
没试过,你自己斟酌

作者: bruceteen   发布时间: 2011-06-15

呜呜,那就不看书了,不继续找了。老老实实做吧

作者: chenhua8869   发布时间: 2011-06-15

C/C++ code
#include <vector>
#include <algorithm>
#include <iterator>
#include <iostream>
using namespace std;

int main()
{
    vector<int> vec;
    vec.push_back( 1 );
    vec.push_back( 2 );
    vec.push_back( 3 );
    vec.push_back( 4 );

    copy( vec.begin(), vec.end(), ostream_iterator<int>(cout," ") );
    cout << endl;

    vec.reserve( vec.size()*2 );
    vec.insert( vec.end(), vec.begin(), vec.end() );

    copy( vec.begin(), vec.end(), ostream_iterator<int>(cout," ") );
    cout << endl;

    return 0;
}


看起来可行

作者: bruceteen   发布时间: 2011-06-15

#include <iostream>
#include <vector>

using namespace std;

int main()
{
vector<int> vec;
int num = 4;
for (int i = 0; i < num; ++i)
{
vec.push_back(i);
}
vec.resize(2*vec.size());
memcpy(&vec[vec.size()/2], &vec[0], vec.size()/2*sizeof(int));
for (size_t j = 0; j < vec.size(); ++j)
{
cout << vec[j] << " ";
}
return 0;
}

作者: wzx19840423   发布时间: 2011-06-15

还真么有。。不过自己做个函数就有了。。。。。嘿嘿。。

作者: dxy0613   发布时间: 2011-06-15

用数组一个一个赋值效率最高。

作者: qq120848369   发布时间: 2011-06-15