C++ c++;返回常数2d数组
我知道如何从函数返回2d数组:C++ c++;返回常数2d数组,c++,multidimensional-array,C++,Multidimensional Array,我知道如何从函数返回2d数组: struct S { int a[3]; int b[4][5]; int const *getA() const {return a;} int (*getB())[5] {return b;} }; 问题是:如何返回常量2d数组?我应该将const放在行中的什么位置 int (*getB())[5] {return b;} ?在int之前 const int (*getB() const)[5] {return b;}
struct S
{
int a[3];
int b[4][5];
int const *getA() const {return a;}
int (*getB())[5] {return b;}
};
问题是:如何返回常量2d数组?我应该将const
放在行中的什么位置
int (*getB())[5] {return b;}
?在
int
之前
const int (*getB() const)[5] {return b;}
在
int
之前
const int (*getB() const)[5] {return b;}
改为使用:
结构
{
使用arrayA_type=std::array;
使用arrayB_type=std::array;
arrayA_a型;
arrayB_b型;
const arrayA_type&getA()const{return a;}
常量arrayB_type&getB()常量{return b;}
};
当然,您可以使用普通的原始数组,但如果您为其使用类型别名,则会更容易,换句话说,使用以下命令将常量放置在何处不会产生混淆:
结构
{
使用arrayA_type=std::array;
使用arrayB_type=std::array;
arrayA_a型;
arrayB_b型;
const arrayA_type&getA()const{return a;}
常量arrayB_type&getB()常量{return b;}
};
当然,您可以使用普通的原始数组,但是如果您为其使用类型别名,那么将更加容易,换句话说,不必混淆将const
放在哪里(或者std::tr1::array
或者boost::array
放在哪里,如果您没有C++11支持的话)。这些类型是可复制、可分配的,它们的引用语法很清楚:
#include <array>
struct S
{
std::array<int, 3> a;
std::array<std::array<int, 5>, 4> b;
const std::array<int, 3>& getA() const {return a; }
const std::array<std::array<int, 5>, 4>& getB() const { return b; }
};
#包括
结构
{
std::数组a;
std::数组b;
const std::array&getA()const{return a;}
常量std::array&getB()常量{return b;}
};
通过使用简化整个过程(或std::tr1::array
或boost::array
如果您没有C++11支持)。这些类型是可复制、可分配的,它们的引用语法很清楚:
#include <array>
struct S
{
std::array<int, 3> a;
std::array<std::array<int, 5>, 4> b;
const std::array<int, 3>& getA() const {return a; }
const std::array<std::array<int, 5>, 4>& getB() const { return b; }
};
#包括
结构
{
std::数组a;
std::数组b;
const std::array&getA()const{return a;}
常量std::array&getB()常量{return b;}
};
为了您的理智起见,请使用std::array
处理类似的内容。“我知道如何从函数返回2d数组”-不,您不知道,因为这是不可能的。您所知道的是如何从函数返回指向数组的指针。为了您的理智起见,请使用std::array
这样的内容。“我知道如何从函数返回2d数组”-不,您不知道,因为这是不可能的。您所知道的是如何从函数返回指向数组的指针。@Turgal还有其他答案,告诉您应该做什么。我的回答只是简单地回答问题,没有别的。我不会投反对票,但严格地说,这并没有回答OP的问题,“返回常量2d数组”,因为它只返回指针。@juanchopanza这是OP的技术错误。。。这是问题我应该把const放在哪里的答案…
@Turgal还有其他答案,告诉我们应该做什么。我的回答只是简单地回答问题,没有别的。我不会投反对票,但严格地说,这并没有回答OP的问题,“返回常量2d数组”,因为它只返回指针。@juanchopanza这是OP的技术错误。。。这是问题的答案,我应该把const放在哪行…