C++ 带有指向具有自定义类型的静态数组指针的向量

C++ 带有指向具有自定义类型的静态数组指针的向量,c++,stdvector,C++,Stdvector,我有这样的想法: typedef int customType[10]; 我想要一个这样的函数 std::vector<customType*>& myFunc(); 由于错误而出错: IntelliSense: a value of type "int *" cannot be assigned to an entity of type "customType*" 2) 一般来说,这是存储此类数据的好方法吗?也许我应该制作一个一维数组,所有的东西都存储在一行中,然后使

我有这样的想法:

typedef int customType[10];
我想要一个这样的函数

std::vector<customType*>& myFunc();
由于错误而出错:

IntelliSense: a value of type "int *" cannot be assigned to an entity of type "customType*"
2) 一般来说,这是存储此类数据的好方法吗?也许我应该制作一个一维数组,所有的东西都存储在一行中,然后使用

A[i*innerLength+j]


要访问元素?

您的代码将无法工作,因为
A[i]
的类型为
int(*)[10]
,而
新的
表达式的类型为
int*
,请将
A
更改为
std::vector
或将数组包装在类或结构中:

struct customType {
    int data[10];
};
然后您可以使用
std::vector
(最好)或
std::vector


<代码> STD::向量不工作,因为C和C++中的数组是不可分配的,这是对<>代码> STD::vector < /C> >的要求。

< P>我一般建议使用类似下面的内容并自己做数组索引。p>
std::vector<int> vals(row_size*col_size, 0);
std::向量VAL(行大小*列大小,0);
如果尺寸真的很大,最好把它拆开。它只是在一个块中分配大量的连续内存。“真的很大”是相当主观的,你可能会得到比大多数人预期的大得多的尺寸。当出现问题时,让探查器告诉您

如果您可以访问C++11,那么这将是另一个选项

TEST(array)
{
    typedef std::array<int,10> Foo;
    typedef std::vector<Foo> Foos;
    Foos foos(10, Foo());
}
测试(数组)
{
typedef std::数组Foo;
typedef std::向量Foos;
Foos-Foos(10,Foo());
}

为什么需要typedef?为什么不能用
int[10]
?作为语法糖呢。自定义类型在代码中有意义(而不是
customType
),它使代码更具可读性。另外,是否可以使用
std::vector
?可以
int[10]
实际上就是
const int*
的结尾。
TEST(array)
{
    typedef std::array<int,10> Foo;
    typedef std::vector<Foo> Foos;
    Foos foos(10, Foo());
}