C++中vector追加vector
在C++中,如果你想将一个vector追加到另一个vector的后面,可以使用std::vector的成员函数insert或者std::copy,或者简单地使用std::vector的push_back方法逐个元素添加。这里我将展示几种常用的方法:
方法1:使用insert方法
#include <vector>
#include <iostream>
int main() {
std::vector<int> vec1 = {1, 2, 3};
std::vector<int> vec2 = {4, 5, 6};
// 使用insert方法,将vec2的所有元素插入到vec1的末尾
vec1.insert(vec1.end(), vec2.begin(), vec2.end());
// 打印vec1以验证结果
for(int i : vec1) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
方法2:使用std::copy方法
#include <vector>
#include <algorithm> // 需要包含此头文件以使用std::copy
#include <iostream>
int main() {
std::vector<int> vec1 = {1, 2, 3};
std::vector<int> vec2 = {4, 5, 6};
// 使用std::copy将vec2的所有元素复制到vec1的末尾
std::copy(vec2.begin(), vec2.end(), std::back_inserter(vec1));
// 打印vec1以验证结果
for(int i : vec1) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
方法3:使用push_back方法逐个添加元素(效率较低)
#include <vector>
#include <iostream>
int main() {
std::vector<int> vec1 = {1, 2, 3};
std::vector<int> vec2 = {4, 5, 6};
// 使用push_back逐个添加vec2的元素到vec1的末尾(效率较低)
for(int i : vec2) {
vec1.push_back(i);
}
// 打印vec1以验证结果
for(int i : vec1) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
方法4:使用范围for循环(简洁但不推荐用于大量数据)
#include <vector>
#include <iostream>
#include <algorithm> // 可能需要包含此头文件以使用std::copy_if(此处仅为示例,实际上不需要)
int main() {
std::vector<int> vec1 = {1, 2, 3};
std::vector<int> vec2 = {4, 5, 6};
// 使用范围for循环(不推荐,仅用于演示)
for (auto& elem : vec2) {
vec1.push_back(elem); // 直接在循环内push_back可能导致效率问题,特别是对于大量数据。更推荐前三种方法。
}
// 打印vec1以验证结果(同上)
for(int i : vec1) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
通常,推荐使用insert方法或std::copy方法,因为它们在内部实现上通常更高效,尤其是在处理大量数据时。而使用push_back逐个添加元素在处理大量数据时可能会比较低效,因为它涉及到多次内存分配和拷贝。