Shi*_*bli 4 c++ assign c++11 stdarray g++4.8
在以下代码中,编译器抱怨为: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;
}
Run Code Online (Sandbox Code Playgroud)
如前所述,根本没有assign成员std::array.
现在有趣的问题变成了原因?毕竟,其他容器都有assign成员方法!
我会注意到,与其他容器不同,std::array它具有固定的大小.如果你使用std::vector<T>::assign(这将是一个近似的等价物),矢量将适当调整大小以匹配所分配的序列的大小; 但是,使用数组是不可能的:
这将是违反直觉的,因为其他容器不会出现这个问题,因为它们的尺寸只是在飞行中进行调整.
出于同样的理由,std::array没有:reserve,capacity,clear,insert,emplace,erase,push/ pop(和变体)或resize.他们都假设容器的大小可能会有所不同.
| 归档时间: |
|
| 查看次数: |
2492 次 |
| 最近记录: |