为什么我不能像这样去除std::array中的盐分?
#include <array>
struct Point
{
float x;
float y;
};
int main()
{
std::array<Point, 3> m_points {
{ 1.0f, 1.0f },
{ 2.0f, 2.0f },
{ 3.0f, 3.0f }
};
}
进行这样的操作会出现错误:
错误:std::array<Point,3ul> 的初始值设定项太多
但是按照以下方式可以正常工作:
std::array<Point, 3> m_points {
Point{ 1.0f, 1.0f },
Point{ 2.0f, 2.0f },
Point{ 3.0f, 3.0f }
};
与之相反,std::map
可以通过以下两种方式进行初始化:
std::map<int, int> m1 {std::pair<int, int>{1,2}, std::pair<int, int>{3,4}};
std::map<int, int> m2 {{1,2}, {3,4}};
std::array<Point, 3> m_points {{{ 1.0f, 1.0f }, { 2.0f, 2.0f }, { 3.0f, 3.0f }}};
。看起来可以用... - ildjarnPoint
。 - meetaigstd::array
都是隐式声明的。std::map
有一个接受std::initializer_list
的构造函数。 - StoryTeller - Unslander Monica