C++ 错误C2075:数组初始化需要大括号

C++ 错误C2075:数组初始化需要大括号,c++,arrays,2d,curly-braces,C++,Arrays,2d,Curly Braces,我想使用STL算法中的std::reverse()函数反转类型为char的2d数组 #include <iostream> #include <algorithm> int main() { char array[10][5]; initiate_array(array); // this takes care of initializing array std::reverse(array, array + 10)

我想使用STL算法中的
std::reverse()
函数反转类型为
char
的2d数组

#include <iostream>
#include <algorithm>

int main()
{
    char array[10][5];

    initiate_array(array);              // this takes care of initializing array

    std::reverse(array, array + 10);    // <- error C2075

    return 0;
}
#包括
#包括
int main()
{
字符数组[10][5];
initiate_array(array);//这负责初始化数组

STD::反向(数组,数组+ 10);//< p>问题的根源是数组不能被分配给另一个。让我们考虑<代码> STD::Reale可以如何实现:

template<class BidirectionalIterator>
void reverse(BidirectionalIterator first, BidirectionalIterator last)
{
    while ((first != last) && (first != --last)) {
        std::swap(*first++, *last);
    }
}
模板
无效反向(先双向运算符,后双向运算符)
{
while((first!=last)&(first!=last)){
std::swap(*第一个++,*最后一个);
}
}
和<>代码> STD::交换E/CODE需要能够分配任何参数,以便交换它们。在这种情况下,你有一个数组数组;所以它试图在数组[0 ]中把char [5 ]数组与数组[10 ]中的一个数组交换,这是无效的C++。
然而,在C++11中,这确实可以像预期的那样工作;这不是因为现在可以分配数组,而是因为
std::swap
获得了一个重载,使它可以用于数组,有效地映射到
std::swap_范围
。但是您应该意识到,这不仅仅是交换指针,而是交换数组类型i问题的根源是数组不能被分配给另一个。让我们考虑<代码> STD::Reale如何实现:

template<class BidirectionalIterator>
void reverse(BidirectionalIterator first, BidirectionalIterator last)
{
    while ((first != last) && (first != --last)) {
        std::swap(*first++, *last);
    }
}
模板
无效反向(先双向运算符,后双向运算符)
{
while((first!=last)&(first!=last)){
std::swap(*第一个++,*最后一个);
}
}
和<>代码> STD::交换E/CODE需要能够分配任何参数,以便交换它们。在这种情况下,你有一个数组数组;所以它试图在数组[0 ]中把char [5 ]数组与数组[10 ]中的一个数组交换,这是无效的C++。
然而,在C++11中,这确实可以像预期的那样工作;这不是因为现在可以分配数组,而是因为
std::swap
获得了一个重载,使它可以用于数组,有效地映射到
std::swap_范围
。但是您应该意识到,这不仅仅是交换指针,而是交换数组类型i个人(你的情况下的角色).

您可能需要字符串向量。问题是数组的类型是另一个数组。@chris是的,
array
是指向指针数组的指针。我想反转这个数组的内容。我不能这样做吗?@Jonas不,不是。
array
是数组数组。数组与指针不同。@Jonas,您非常需要它:。它涉及到复杂的方面,而不仅仅是基本的用途。我们可以看到initiate函数吗?您可能需要一个字符串向量。问题是数组所包含的类型是另一个数组。@chris yeah,
array
是指向指针数组的指针。我想反转此数组的内容。我不能o那是什么?@Jonas不,不是。
array
是一个数组数组。数组与指针不同。@Jonas,你非常需要它:。它涉及到复杂的方面,而不仅仅是基本用途。我们能看到initiate函数吗?