std :: list c的数组

Mar*_*nto 4 c++ arrays list

我找不到任何人类解释:如何创建一系列列表,如:

std::list<int> mylist[size] ?
Run Code Online (Sandbox Code Playgroud)

如果我把它放在我的程序中,它会编译但会产生一些问题,因为它不会执行任何代码(如果我写出mylist w/out [size],其余代码就可以正常工作)

我正在读某个地方,不推荐使用C的原始数组; 有什么选择?

谢谢抱歉

seh*_*ehe 5

进一步来说,

#include <array>
#include <list>

int main() {
     std::array<std::list<int>, 10> this_would_do;
}
Run Code Online (Sandbox Code Playgroud)


Kev*_*son 5

您的声明不正确,并且在C ++中不受支持。您试图在运行时声明一个可变大小的数组,这是C99的功能,但不是C ++中的功能。参见此处:运行时允许数组大小而无需动态分配?

你有这个:

std::list<int> mylist[size]
Run Code Online (Sandbox Code Playgroud)

您需要的是:

std::list<int> mylist[] = new std::list<int>[size];
Run Code Online (Sandbox Code Playgroud)

但这仍然不是一个好主意,因为您稍后需要使用来取消分配delete []。就像其他人所说的,您可以通过几种不同的方式来做到这一点,所有这些方式对于c ++都是更好的:

std::list< std::list< int > > myListOfLists;      // Linked list of linked lists
std::vector< std::list< int > > myVectorOfLists;  // Better, a vector is more like an array
std::array<std::list<int>, 10> this_would_do;     // From above, only works if you know the array size at compile-time
Run Code Online (Sandbox Code Playgroud)

希望这对您有所帮助。