c++ - std::deque.push_back(x) - 它到底做了什么?

标签 c++ stl

根据 http://www.cplusplus.com/reference/stl/deque/push_front/ x 是“要复制到新元素的值。 T 是第一个模板参数(存储在容器中的元素的类型)。”

内置类型很容易,但现在我正在创建一个类,以及这个类的对象的双端队列 - 我需要什么才能让 push_front 工作?

我想我需要构造函数,但是函数头是什么?

最佳答案

据我所知,只要求存储在 std::deque<> 中的元素类型是:

  1. 公共(public)默认构造函数(在成员中使用,例如 .resize())
  2. 一个公共(public)的复制构造函数(容器存储项目的拷贝并可以在内部随意复制它们)
  3. 一个公共(public)赋值运算符(容器可以在内部随意覆盖项目)
  4. 公众nothrow()析构函数(没有它容器无法保证其异常保证。

例如,这个简单的类工作正常:

 class Person
 {
     std::string myName;
 public:
      void name(const string&);
      const std::string& name(const string&) const;
 };

因为编译器生成的默认值已经足够好了。它可以像这样使用:

 std::dequeue<Person> people;
 people.push_back(Person());
 people.back().name("George");

关于c++ - std::deque.push_back(x) - 它到底做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8377906/

相关文章:

c++ - OpenGL 中的内存分配

c++ - C++中的多重定义错误

c++ - boost STL vector 中的循环缓冲区在发布时崩溃

c++ - 以与数组相同的方式在 map 上循环

c++ - 在不初始化数据的情况下调整 C++ std::vector<char> 的大小

c++ - std::string::substr 返回的对象的生命周期

c++ - 了解成员初始值设定项列表

c++ - 如何在 C++ 中将 double 转换为字符串(无科学记数法)?

c++ - 存储套接字信息随机存取速度

c++ - 处理数组队列