我如何连接两个std::向量?
当前回答
老实说,你可以通过将两个向量中的元素复制到另一个向量中来快速连接两个向量,或者只是添加两个向量中的一个!这取决于你的目标。
方法1:指定新向量的大小为两个原向量的大小之和。
vector<int> concat_vector = vector<int>();
concat_vector.setcapacity(vector_A.size() + vector_B.size());
// Loop for copy elements in two vectors into concat_vector
方法二:通过添加/插入向量B的元素来追加向量A。
// Loop for insert elements of vector_B into vector_A with insert()
function: vector_A.insert(vector_A .end(), vector_B.cbegin(), vector_B.cend());
其他回答
vector1.insert( vector1.end(), vector2.begin(), vector2.end() );
我将使用插入函数,类似于:
vector<int> a, b;
//fill with data
b.insert(b.end(), a.begin(), a.end());
你应该使用vector::insert
v1.insert(v1.end(), v2.begin(), v2.end());
对于提供push_back (string, vector, deque,…)功能的容器:
Std::copy(Std::begin(input), Std::end(input), Std::back_inserter(output))
and
对于提供insert (map, sets)功能的容器:
Std::copy(Std::begin(input), Std::end(input), Std::inserter(output, output.end()))
将这个添加到头文件中:
template <typename T> vector<T> concat(vector<T> &a, vector<T> &b) {
vector<T> ret = vector<T>();
copy(a.begin(), a.end(), back_inserter(ret));
copy(b.begin(), b.end(), back_inserter(ret));
return ret;
}
然后这样用:
vector<int> a = vector<int>();
vector<int> b = vector<int>();
a.push_back(1);
a.push_back(2);
b.push_back(62);
vector<int> r = concat(a, b);
R将包含[1,2,62]
推荐文章
- cplusplus.com给出的错误、误解或坏建议是什么?
- 找出质数最快的算法是什么?
- c++枚举类可以有方法吗?
- 如何在Python中连接文本文件?
- 格式化IO函数(*printf / *scanf)中的转换说明符%i和%d之间的区别是什么?
- 将析构函数设为私有有什么用?
- main()中的Return语句vs exit()
- 为什么c#不提供c++风格的'friend'关键字?
- 在函数的签名中添加关键字
- 我如何在Visual Studio中预处理后看到C/ c++源文件?
- 为什么在标准容器中使用std::auto_ptr<>是错误的?
- 用比较double和0
- 保护可执行文件不受逆向工程的影响?
- 在c++中字符串前面的“L”是什么意思?
- 为什么std::map被实现为红黑树?