根据http://www.cplusplus.com/reference/stl/deque/push_front/ x是“要复制到新元素的值。 T是第一个模板参数(存储在容器中的元素的类型)。“
内置类型足够简单,但现在我正在创建一个类,以及此类对象的副本 - 我需要什么才能使push_front工作?
我想我需要构造函数,但函数头是什么?
答案 0 :(得分:4)
AFAIK,只对std::deque<>
中存储的元素类型的要求是:
.resize()
)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");
答案 1 :(得分:1)
您需要为您的类,析构函数和复制构造函数指定一个赋值运算符。
答案 2 :(得分:0)
您的类需要是可复制的(复制构造函数和赋值运算符)并且具有公共析构函数;默认构造函数也有帮助。
请注意,如果您的类不复杂,编译器提供的复制构造函数,赋值运算符和析构函数就足够了。
答案 3 :(得分:0)
如果您拥有类,则推入deque实例。已调用复制构造函数。您必须提供或使用默认