动态数组 与 容器问题???

love_codecsde 2010-08-13 09:23:36
一个程序的部分源代码如下:声明:list<V_Wave> V_Wave_List[Number][Number];
使用这个容器: list<V_Wave>::iterator v_wave_it;
for(v_wave_it = V_Wave_List[m][n].begin(); v_wave_it != V_Wave_List[m][n].end(); v_wave_it++)//m,n 为已知值。。

现在:Number 的值未知,我的想法是这样的:声明一个 int **pV_Wave;动态创建一个二维数组。但我遇到这条语句的时候。for(v_wave_it = V_Wave_List[m][n].begin(); v_wave_it != V_Wave_List[m][n].end(); v_wave_it++) 不知道怎么改,这条语句 是什么意思???? 如何 改变这条语句。

ps:我的思路对不对?? 如果不对,改 用怎样的思路。
...全文
126 点赞 收藏 17
写回复
17 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
na_he 2010-08-26
感觉思路怪怪的,动态创建一个二维数据感觉比较简单。
回复
love_codecsde 2010-08-26
谢谢各位的帮忙,不过我的程序 有点大,还是不能完美的解决。。。。还是先结贴 给分。。
回复
love_codecsde 2010-08-25
好,我试试
回复
NIKE霸天虎 2010-08-24
list<V_Wave> V_Wave_List[Number][Number];
这里定义了一个二维数组,数组成员是list对象,可以直接用vector来做二维数组

vector<vector<list<V_Wave> > >, 然后来对应遍历.
回复
niupanboy 2010-08-24
number未知?那怎么可以list<V_Wave> V_Wave_List[Number][Number];
你的意思是不知道number是多少,也就是动态增加的吧,那就不能这样写。
vector<vector<V_Wave > > V_Wave_List;//定义一个可动态增加的二维数组。
for (vector<vector<int> >::iterator itpar = sum.begin(); itpar < sum.end(); itpar++)
{
for (vector<int>::iterator itsub = itpar->begin(); itsub < itpar->end(); itsub++)
{
//这样加入操作的代码
}
}
回复
奈落之夜宵 2010-08-24
拿个可用分就走
回复
hztj2005 2010-08-24
number 是未知的, 你可以先给一个大概数,比如1000,以后需要可以随时增加,这就是动态数组。
数组的大小可以随时用函数,获取,这就是动态数组。
已经说了:
你可以看 Adam Drozdek <数据结构和算法>,或者找其它关于容器的书看。
你要是对容器完全没概念,谁有办法。

for(v_wave_it = V_Wave_List[m][n].begin(); v_wave_it != V_Wave_List[m][n].end(); v_wave_it++)//

m,n 不需要知道。
回复
love_codecsde 2010-08-19
朋友们,帮帮我啊,这是一个非常重要是程序啊,我在这里 卡住了。。。。想了几天,没有解决。。。。。。
回复
love_codecsde 2010-08-19
[Quote=引用 8 楼 hztj2005 的回复:]
list<V_Wave> V_Wave_List[Number][Number];
这本身是动态二维数组,可以随时增加记录。
不需要再声明一个 int **pV_Wave=list<V_Wave> V_Wave_List[Number][Number];
你可以看 Adam Drozdek <数据结构和算法>,或者找其它关于容器的书看。
[/Quote]

你没有明白我的意思:number 是未知的??? 哎。。。。。。。。。。。
回复
hztj2005 2010-08-18
list<V_Wave> V_Wave_List[Number][Number];
这本身是动态二维数组,可以随时增加记录。
不需要再声明一个 int **pV_Wave=list<V_Wave> V_Wave_List[Number][Number];
你可以看 Adam Drozdek <数据结构和算法>,或者找其它关于容器的书看。
回复
lymastee 2010-08-17
stl? 你最好不要这样用哦...这样生成了Number*Number个list, 很浪费. 这点不说

int **pV_Wave, 这样声明, 如果不指定 pV_Wave = XXX[具体的数][具体的数], 很可能 pV_Wave_List[m][n] 取不到正确的值, 因为2维数组需要第2个维度来确定位置.
并且这个数组里所有的迭代器都是 list<V_Wave>::iterator 的, 容易出错.

你真要动态创建, 就应该 int * pV_Wave[] 这样声明, 然后分别 new 或者 malloc 出所有 list,
这样动态创建就没有关系, 因为地址不必是连续的.
回复
love_codecsde 2010-08-17
谢谢你,还能多给点帮助吗????????
回复
zjz800800 2010-08-16
请问 这一句该怎么改啊:for(v_wave_it = V_Wave_List[m][n].begin(); v_wave_it != V_Wave_List[m][n].end(); v_wave_it++)// m,n 为已知值。。。。。。


这条是对所有数据进行逐次进行遍厉的,根据你定义的int **pV_Wave
可改为
for(int i=0; i< m*n; i++)
{
... = **pV_Wave;
}
回复
love_codecsde 2010-08-16
请问 这一句该怎么改啊:for(v_wave_it = V_Wave_List[m][n].begin(); v_wave_it != V_Wave_List[m][n].end(); v_wave_it++)// m,n 为已知值。。。。。。
回复
oyljerry 2010-08-13
list<V_Wave> V_Wave_List[Number][Number];
这里定义了一个二维数组,数组成员是list对象,可以直接用vector来做二维数组

vector<vector<list<V_Wave> > >, 然后来对应遍历...
回复
list<V_Wave> V_Wave_List[Number][Number];
这个定义了一个list的二位数组对象噶,感觉用法有点奇怪
回复
jackyjkchen 2010-08-13
其他的不说,要数组应该用vector,他是连续内存,遍历较快;list是节点型的,遍历比较慢
回复
发动态
发帖子
硬件/系统
创建于2007-09-28

2590

社区成员

VC/MFC 硬件/系统
申请成为版主
社区公告
暂无公告