C++动态数组问题。急!

来源:百度知道 编辑:UC知道 时间:2024/05/16 05:53:52
定义如下:
list<int>* neighbors;
neighbors=new list<int>[N];
无论N取值多少。始终只有neighbors[0]存在。其他皆不存在!为什么!高手解答一下!

可能因为list是实时内存分配的。
List表是编程中使用非常频繁的一种数据结构。在内存中的存储结构多为链式结构。一般每当往List表中插入一个节点时,就会动态分配一块一个节点大小的内存块。如果这个表中的节点很多,就会频繁的进行内存的动态分配,这会花费系统的很多时间,降低效率和性能。

一般来说,应该给List表预分配一块内存相连(顺序存储)的内存块,内存块的大小可以是5个节点的大小或10节点的大小,根据插入节点的频繁度来决定。越频繁,分配的节点数相对大些。

我也不太懂,你看看这个
http://xgzpan.spaces.live.com/blog/cns!72154413d8c2523!130.entry?wa=wsignin1.0

list<T>本身就是STL封装好的链表(链表不用像数组那样的分配空间)。
你直接定义一个链表的实例对象就可以用了,不用你分配,自动分配。
list<int> l;
l.push_back(1);
l.push_back(2);
...
访问时你要用迭代器,这是STL的用法,具体的你看书吧,一句话也讲不完

你建立了一个list的数组,想问一下你是怎么得到其他皆不存在的结论的?