如何在C++中将两个向量复制到另一个向量
How can I copy two vectors to other vector in C++
我有两个向量。我想做一个新的向量,它包含这两个向量的值。我发现一种快速的方法可以用作
vector<int> original_vector
vector<int> copy_to_vector(original_vector)
然而,它并没有显示如何将两个矢量复制(以上仅针对一个矢量复制到另一个矢量)。现在我的问题是
vector<int> original_vector1
vector<int> original_vector2
//Copy original_vector1 and original_vector2 to copy_to_vector
// Note that original_vector1 or original_vector2 maybe empty
vector<int> copy_to_vector
我怎样才能用C++做这件事。我在Ubuntu 中使用g++
我目前的解决方案是
std::vector<U32> copy_to_vector(original_vector1);
copy_to_vector.insert(copy_to_vector.end(), original_vector2.begin(), original_vector2.end());
vector<int> copy_to_vector(original_vector1)
copy_to_vector.reserve(original_vector1.size() + original_vector2.size());
copy_to_vector.insert( copy_to_vector.end(), original_vector2.begin(), original_vector2.end());
如果其中一个vectors
或两个都是空,则此解决方案可以正常工作
实时演示
在实用程序函数中封装这样的操作通常是个好主意。
RVO采用的是删除返回值的副本,因此此代码与内联操作一样高效,但更易于维护,更易于推理:
#include <iostream>
#include <vector>
#include <algorithm>
// utility function to return a new vector which is the
// result of v1 with v2 appended. order is preserved
std::vector<int> combine(const std::vector<int>& v1,
const std::vector<int>& v2)
{
std::vector<int> result;
result.reserve(v1.size() + v2.size());
result = v1;
result.insert(result.end(), v2.begin(), v2.end());
return result;
}
int main()
{
using namespace std;
vector<int> x = { 1, 2, 3 };
vector<int> y = { 4, 5, 6 };
auto z = combine(x, y);
copy(begin(z), end(z), ostream_iterator<int>(cout, "n"));
return 0;
}
使用std::back_inserter
#include <iterator> // back_inserter
#include <algorithm> // copy
vector<int> copy_to_vector;
copy_to_vector.reserve( original_vector1.size() + original_vector2.size() ) // reserve memory for both vectors at once
copy_to_vector = original_vector1;
std::copy(original_vector2.begin(),original_vector2.end(),std::back_inserter(copy_to_vector));
相关文章:
- 如何检查两个 std::向量在小于 O(n) 的时间复杂度内是否相等
- 查找两个排序向量中共有的元素
- 如何从文件中读取两个字符串和数字数组,并将它们存储在对象向量中
- 将向量之间的数字放在另一个向量之间<vector>>如果两个数字的差值为 1
- 在类 A 中创建类型为 B 类的向量 - 访问数据 [C++] [成员在两个类中都是私有的]
- 如何根据两个因素组织向量:id 和数量?(C++)
- 在C++中查找两个向量之间最相似的值
- 如何在C++中从两个向量生成所有可能的对?
- 返回两个向量 – 使用引用还是元组?
- 使用 std::vector::swap 方法在C++中交换两个不同的向量是否安全?
- 检查两个向量是否并行的最有效方法
- 有没有办法将两个或多个不同的类链接到一个类中(稍后在向量上使用)?
- 我有一个返回字符串向量的函数.它需要两个字符串,并且返回一个字符串中缺少的字符串
- 如何获得比较两个向量对的子集
- C++将两个不同类型的向量的属性连接到新的向量中
- 如何组合两个整数向量
- 在两个类实例之间共享向量
- 如何在 c++ 中对两个向量进行线性搜索?
- 如何在 c++ 中从两个向量创建 JSON 对象?
- 为什么具有两个元素的发起器语法将一个元素而不是两个元素放入字符串向量中?