我找不到任何人为的解释:如何创建一个列表数组,如
std::list<int> mylist[size] ?
如果我把它放在我的程序中,它会编译但会产生一些问题,因为它不执行任何代码(如果我写 mylist w/out [size],其余代码工作得很好)
我在某处读到不推荐使用 C 的原始数组;有哪些选择?
谢谢你的新意
您的声明不正确,并且在 C++ 中不受支持。您试图在运行时声明一个可变大小的数组,这是 C99 的一项功能,但不在 C++ 中。请参阅此处:允许运行时没有动态分配的数组大小?
你有这个:
std::list<int> mylist[size]
你需要的是这样的:
std::list<int> mylist[] = new std::list<int>[size];
但这仍然是一个坏主意,因为您需要稍后使用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
我希望这对您有所帮助并且很清楚。
进一步来说,
#include <array>
#include <list>
int main() {
std::array<std::list<int>, 10> this_would_do;
}
//Codes // | Being Human
typedef list<int> L; // | L is now "alias" for list of integers
const int arr_size=100; // | array needs a constant size, list don't
array<L,arr_size> myArrayOfList; // | An Array as elements L
list<L> myListOfList; // | A List of elements L
//A STL list is doubly linked list
Vector可以很好地替代 C 数组:
#include <vector>
...
std::vector<std::list<int> > vectorOfLists;
如果您实际上有一个固定大小(例如,您有一个“分数”为 0-9 的项目列表),那么使用固定大小的数组就可以了:
std::list<item> scored_items[10];
当然,如果你事先不知道你真正想要多少,这是一个糟糕的主意。那么要么std::list < std::list < item > > myLists;
或向量std::vector < std::list < item> my_lists;
将是合适的解决方案。
“正确”的解决方案取决于您的最终目标是什么。
声明列表的语法如下
std::list<T> my_list;
T 是任何类型的占位符,包括另一个列表,因此您可以将 T 替换std::list<int>
为给出以下内容
std::list<std::list<int>> my_list;
这声明了一个可以容纳可以容纳整数的列表的列表。请注意,某些编译器可能会抱怨>>
,在这种情况下将其更改为> >