根据 http://www.cplusplus.com/reference/stl/deque/push_front/ x 是“要复制到新元素的值。 T 是第一个模板参数(存储在容器中的元素的类型)。”
内置类型很容易,但现在我正在创建一个类,以及这个类的对象的双端队列 - 我需要什么才能让 push_front 工作?
我想我需要构造函数,但是函数头是什么?
最佳答案
据我所知,只要求存储在 std::deque<>
中的元素类型是:
- 公共(public)默认构造函数(在成员中使用,例如
.resize()
) - 一个公共(public)的复制构造函数(容器存储项目的拷贝并可以在内部随意复制它们)
- 一个公共(public)赋值运算符(容器可以在内部随意覆盖项目)
- 公众
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/