如何使用C++ STL合并两个向量?
在C++ STL中,我们可以使用std::merge()
函数来合并两个有序的向量。对于不熟悉STL的同学,先简单介绍一下,STL是Standard Template Library的缩写,是C++语言的标准模板库,在C++98标准化中被引入,提供了一系列的模板类、函数和算法,它的目的是为了复用性和可移植性。std::merge()
函数是STL中的一个算法函数,可以合并两个已排序的序列,将两序列中的元素按照大小顺序逐个比对,最后将两序列合并成一个有序序列并返回。
下面我们通过一个简单的例子来展示如何使用std::merge()
函数来合并两个向量:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> v1 = {1, 3, 5};
std::vector<int> v2 = {2, 4, 6};
std::vector<int> v_merge(v1.size()+v2.size());
std::merge(v1.begin(), v1.end(), v2.begin(), v2.end(), v_merge.begin());
for(auto& i : v_merge){
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
在上面的代码中,我们声明了两个向量v1
和v2
,并将它们分别初始化成{1,3,5}
和{2,4,6}
,然后我们声明另外一个向量v_merge
,用来存储合并后的两个向量。
接着,我们调用std::merge()
函数,将v1
和v2
合并成一个有序的向量,使用v_merge
来存储,v_merge.begin()
表示合并后的向量的首个元素,v_merge.end()
表示合并后的向量的最后一个元素的后一个位置。此时v_merge
中存储的元素就是合并后的两个原向量中所有的元素了。
最后,我们利用循环遍历输出v_merge
中的元素,可以发现结果为1 2 3 4 5 6
,证明了std::merge()
函数可以将两个有序的向量进行合并。
需要注意的是,std::merge()
函数的参数如下:
std::merge(first1, last1, first2, last2, result);
其中,first1
和last1
表示第一个序列的起止位置;first2
和last2
表示第二个序列的起止位置;result
表示合并后的序列的起始位置。
如果result
的长度不够,那么只会拷贝长度为result
的大小的元素,其余的元素将会被丢弃。
结论
综上所述,我们可以通过std::merge()
函数来合并两个已排序的向量。通过上面提供的示例代码,我们可以发现STL中提供了非常方便的函数来完成向量操作,这同时也提高了代码的可读性和可维护性。因此,在实际开发中,我们应该充分发挥STL的优势,提高代码质量和开发效率。