gpt4 book ai didi

c++ - 无法编译 C++ deque.erase() 调用

转载 作者:行者123 更新时间:2023-12-01 14:48:03 26 4
gpt4 key购买 nike

我无法编译那个简单的代码。为什么?

#include <iostream>
#include <deque>
#include <functional>
#include <utility>

int main() {
std::deque<std::pair<const int, int>> dq;

// problem with that line
dq.erase(dq.begin());

return 0;
}

我在 WSL Ubuntu 18.04.2 LTS 上使用 GCC 版本 7.4.0。

如果我定义 dqstd::deque<std::pair<int, int>> dq; ,都编译nice。

最佳答案

std::deque<T>::erase(const_iterator) 要求 T可移动分配。这是因为如果你删除了不在双端队列开始或结束的东西,它就必须把所有东西都移过去(你不能用包含 const 的对来做)。

您可以使用 std::deque<T>::pop_front() 相反,这将起作用,因为它只需要破坏一个元素。

关于c++ - 无法编译 C++ deque.erase() 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61427561/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com