[英]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.