C++ 的 emplace_back 和 push_back(含相应的 C++ 代码)

在 C++ 中,emplace_backpush_back 都是向容器中添加元素的方法,但它们的实现方式和使用场景略有不同。

  1. emplace_back

emplace_back 是 C++11 标准中引入的一个方法,用于向容器中添加一个元素,它与 push_back 类似,但在使用上具有更高的效率。emplace_back 不需要创建一个元素副本再插入容器,而是在容器中直接构造新元素。

以下是使用 emplace_back 方法向 vector 容器中添加元素的示例代码:

#include <iostream>
#include <vector>

struct Student
{
    std::string name;
    int age;
    float score;
};

int main()
{
    std::vector<Student> students;

    // 向 vector 容器中添加一个新元素
    students.emplace_back("John", 22, 95.0f);

    // 输出容器中的元素
    for (auto& s : students)
    {
        std::cout << s.name << ", " << s.age << ", " << s.score << std::endl;
    }

    return 0;
}

上面的代码中,我们创建了一个 struct 类型的 Student,然后使用 emplace_back 方法向 vector 容器中添加了一个新的 Student 对象。由于 emplace_back 方法会直接在容器中构造新元素,因此它可以避免在添加元素时的额外开销,从而提高代码的执行效率。

  1. push_back

push_back 也是向容器中添加元素的方法,它是 C++ 标准库中众多容器中的一个成员函数。push_back 方法的作用是将一个元素添加到容器的尾部。相比于 emplace_backpush_back 的使用要简单直接一些,但是它需要先创建一个元素副本再将其添加到容器中。

以下是使用 push_back 方法向 vector 容器中添加元素的示例代码:

#include <iostream>
#include <vector>

struct Student
{
    std::string name;
    int age;
    float score;
};

int main()
{
    std::vector<Student> students;

    Student s{"John", 22, 95.0f};
    // 将现有元素的副本推入 vector 容器中
    students.push_back(s);

    // 输出容器中的元素
    for (auto& s : students)
    {
        std::cout << s.name << ", " << s.age << ", " << s.score << std::endl;
    }

    return 0;
}

上面的代码中,我们先创建了一个 Student 对象 s,然后将其作为参数传递给 vector 容器的 push_back 方法。在这个例子中,我们先创建了 s 这个结构体对象,再将其的副本推入 vector 容器中。

从代码的角度来看,push_back 的使用比 emplace_back 略显繁琐。但是,在一些使用场景下,push_back 仍然是更适合的选择,例如当对象类型不提供默认构造函数时。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值