如何合并两个向量
How can I merge two vectors?
我正在开发一个应用程序,我想提高效率。 在一个重要的部分中,我有 2 个大向量(大小相同),我将一个合并到另一个中。 我想做的是:
std::vector<int> first (4,2); //A vector containing 4 ints with value 2
std::vector<int> second (4,3); //A vector with 4 ints with value 3
for(int i = first.size()-1; i > 0; --i){
first[i] += second[i];
}
如何提高工作效率? 提前感谢!
为了有效地合并多个向量,您应该使用 SIMD(如果您的硬件支持的话)。有几种方法可以做到这一点:
- 使用内联组装;
- 使用内联函数;
- 使用特殊类,这些类可能使用 SIMD,如 C++11 std::valarray 中提供的那样;
- 使用编译器指定的选项和指令;
- 别的。
例如,您可以使用多线程。但是你的数组应该非常大才能获得利润 - 从大约 1,000,000 个元素开始
您可能会更快地找到此方法:
int main()
{
int first = {5, 10, 15, 20, 25};
int second = {50, 40, 30, 20, 10};
int* f = first;
int* e = first + (sizeof(first)/sizeof(int));
int* s = second;
while(f != e)
*f++ += *s++;
for(std::size_t i = 0; i < sizeof(first)/sizeof(int); ++i)
std::cout << " " << first[i];
}
试试这个:
int main()
{
int first[] = {5,10,15,20,25};
int second[] = {50,40,30,20,10};
int len=first.size();
for(int i = 0; i < second.size(); i++,len++)
{
first[len]= second[i];
}
}
相关文章:
- 如何检查两个 std::向量在小于 O(n) 的时间复杂度内是否相等
- 查找两个排序向量中共有的元素
- 如何从文件中读取两个字符串和数字数组,并将它们存储在对象向量中
- 将向量之间的数字放在另一个向量之间<vector>>如果两个数字的差值为 1
- 在类 A 中创建类型为 B 类的向量 - 访问数据 [C++] [成员在两个类中都是私有的]
- 如何根据两个因素组织向量:id 和数量?(C++)
- 在C++中查找两个向量之间最相似的值
- 如何在C++中从两个向量生成所有可能的对?
- 返回两个向量 – 使用引用还是元组?
- 使用 std::vector::swap 方法在C++中交换两个不同的向量是否安全?
- 检查两个向量是否并行的最有效方法
- 有没有办法将两个或多个不同的类链接到一个类中(稍后在向量上使用)?
- 我有一个返回字符串向量的函数.它需要两个字符串,并且返回一个字符串中缺少的字符串
- 如何获得比较两个向量对的子集
- C++将两个不同类型的向量的属性连接到新的向量中
- 如何组合两个整数向量
- 在两个类实例之间共享向量
- 如何在 c++ 中对两个向量进行线性搜索?
- 如何在 c++ 中从两个向量创建 JSON 对象?
- 为什么具有两个元素的发起器语法将一个元素而不是两个元素放入字符串向量中?