![](/img/trans.png)
[英]error: 'class std::stack<>' has no member named 'pop_back'
[英]std::array error: Has no member named 'assign'
在下面的代碼中,編譯器抱怨為: struct std::array<double,5ul> has no member named 'assign'
。 這里似乎有可能。 為什么會這樣? (編譯:g ++ 4.8.2)
#include <array>
int main()
{
std::array<double,5> arr;
arr.assign(4.); // error: has no member named 'assign'
return 0;
}
array::assign()
是一個Visual Studio擴展。 您正在使用g ++進行編譯。 檢查這里的標准g ++數組
如前所述, std::array
沒有assign
成員。
現在有趣的問題變成了原因 ? 畢竟,其他容器都有一個assign
成員方法!
我會注意到,與其他容器不同, std::array
具有固定的大小。 如果你使用std::vector<T>::assign
(它將是一個等價的近似值),則適當調整向量的大小以匹配所分配的序列的大小; 但是,使用數組是不可能的:
這是違反直覺的,因為其他容器的問題不會出現,因為它們的尺寸只是在飛行中進行調整。
出於類似的原因, std::array
沒有: reserve
, capacity
, clear
, insert
, emplace
, erase
, push
/ pop
(和variants)或resize
。 他們都假設容器的大小可能會有所不同。
這很簡單,你可以看到這里沒有std數組的assign成員函數。 但是,您應該可以使用名為fill
的成員函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.