[英]Cannot compile C++ deque.erase() call
我無法編譯那個簡單的代碼。 為什么?
#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。
如果我將dq
定義為std::deque<std::pair<int, int>> dq;
,都編譯好。
std::deque<T>::erase(const_iterator)
要求T
是可移動賦值的。 這是因為如果您刪除了不在雙端隊列開頭或結尾的內容,則必須將所有內容移過來(對於包含const
的對,您無法做到這一點)。
您可以改用std::deque<T>::pop_front()
,這將起作用,因為它只需要破壞一個元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.