C++中vector追加vector

ops/2025/2/1 7:13:10/

在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逐个添加元素在处理大量数据时可能会比较低效,因为它涉及到多次内存分配和拷贝。


http://www.ppmy.cn/ops/154676.html

相关文章

从CRUD到高级功能:EF Core在.NET Core中全面应用(四)

初识表达式树 表达式树&#xff1a;是一种可以描述代码结构的数据结构&#xff0c;它由一个节点组成&#xff0c;节点表示代码中的操作、方法调用或条件表达式等&#xff0c;它将代码中的表达式转换成一个树形结构&#xff0c;每个节点代表了代码中的操作例如&#xff0c;如果…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.24 随机宇宙:生成现实世界数据的艺术

1.24 随机宇宙&#xff1a;生成现实世界数据的艺术 目录 #mermaid-svg-vN1An9qZ6t4JUcGa {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-vN1An9qZ6t4JUcGa .error-icon{fill:#552222;}#mermaid-svg-vN1An9qZ6t4JUc…

MySQL为什么默认引擎是InnoDB ?

大家好&#xff0c;我是锋哥。今天分享关于【MySQL为什么默认引擎是InnoDB &#xff1f;】面试题。希望对大家有帮助&#xff1b; MySQL为什么默认引擎是InnoDB &#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 MySQL 默认引擎是 InnoDB&#xff0c;主要…

《网络安全中的“泛洪”攻击:揭秘、防范与应对策略》

各类泛洪攻击总结 IPV4泛洪 一、什么是泛洪? 泛洪的基本原理就是基于协议通信&#xff0c;完成大流量高并发操作&#xff0c;导致目标主机各类资源消耗过多而无法提供正常的服务。基于多线程或多进程&#xff08;MAC地址泛洪&#xff0c;ARP泛洪欺骗&#xff09;。 (1) 攻击…

Flink (十二) :Table API SQL (一) 概览

Apache Flink 有两种关系型 API 来做流批统一处理&#xff1a;Table API 和 SQL。Table API 是用于 Scala 和 Java 语言的查询API&#xff0c;它可以用一种非常直观的方式来组合使用选取、过滤、join 等关系型算子。Flink SQL 是基于 Apache Calcite 来实现的标准 SQL。无论输入…

leetcode 面试经典 150 题:有效的括号

链接有效的括号题序号20题型字符串解法栈难度简单熟练度✅✅✅ 题目 给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须…

「全网最细 + 实战源码案例」设计模式——生成器模式

核心思想 生成器模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;用于分步骤构建复杂对象&#xff0c;允许用户通过控制对象构造的过程&#xff0c;定制对象的组成部分&#xff0c;而无需直接实例化它们的细节。建造者模式特别适合构建具有多种配…

python3+TensorFlow 2.x(四)反向传播

目录 反向传播算法 反向传播算法基本步骤&#xff1a; 反向中的参数变化 总结 反向传播算法 反向传播算法&#xff08;Backpropagation&#xff09;是训练人工神经网络时使用的一个重要算法&#xff0c;它是通过计算梯度并优化神经网络的权重来最小化误差。反向传播算法的核…