除非我弄错了,否则应该可以通过以下方式创建一个std:array:
std::array<std::string, 2> strings = { "a", "b" };
std::array<std::string, 2> strings({ "a", "b" });
Run Code Online (Sandbox Code Playgroud)
然而,使用GCC 4.6.1我无法使其中任何一个工作.编译器简单地说:
expected primary-expression before ',' token
Run Code Online (Sandbox Code Playgroud)
然而初始化列表与std :: vector一起工作正常.那是哪个呢?我错误地认为std :: array应该接受初始化列表,还是让GNU标准C++库团队搞错了?
如果我想构建一个非常简单的数组
int myArray[3] = {1,2,3};
Run Code Online (Sandbox Code Playgroud)
我应该用std::array吗?
std::array<int, 3> a = {{1, 2, 3}};
Run Code Online (Sandbox Code Playgroud)
使用std :: array比使用常规的有什么好处?性能更高吗?更容易处理复制/访问?
如何将m矩阵传递给foo()?如果我不被允许更改代码或foo()的原型?
void foo(float **pm)
{
int i,j;
for (i = 0; i < 4; i++)
for (j = 0; j < 4; j++)
printf("%f\n", pm[i][j]);
}
int main ()
{
float m[4][4];
int i,j;
for (i = 0; i < 4; i++)
for (j = 0; j < 4; j++)
m[i][j] = i+j;
foo(???m???);
}
Run Code Online (Sandbox Code Playgroud)