deque push_back 和emplace back
时间: 2023-05-08 13:55:59 浏览: 108
DStl:采用STL样式的各种数据结构实现
deque是一种双端队列,push_back用于在队列尾部插入元素,但是此操作需要构造一个新的元素对象,如果元素类较为复杂,则会耗费一定的时间和内存开销。而emplace_back方法是C++11标准引入的新特性,它用于在队列尾部插入元素,但是不需要构造一个新的元素对象,而是直接在已有元素上构造新元素,这样可以提高效率,减少内存开销。
具体来说,当使用push_back操作时,程序会显式地调用元素类的构造函数,为元素对象分配内存,然后将元素插入到队列尾部,这个过程一般比较耗时。而使用emplace_back时,程序不需要显式地调用构造函数,而是直接在队列尾部开辟一块内存,然后在该内存上构造新元素,这个过程通常比较快。因此,当元素类较为复杂时,推荐使用emplace_back方法。
总的来说,push_back方法适用于元素类较为简单的情况,而emplace_back方法适用于元素类较为复杂的情况。但是需要注意的是,由于emplace_back方法不需要调用构造函数,因此需要保证元素类具有移动构造函数或完美转发构造函数,否则程序将无法正确地构造元素对象。
阅读全文