如何返回二维数组

lily604 2008-04-02 11:53:34
 
大家帮我看看这段代码,我想把vector 中的字符转换成bool值,然后把所有的值放入一个二维数组,能够执行但是不是我想要的结果
typedef bool* blptr;
void main()
 {
 vector<string> vec;
     sub_set(1,2,vec);
blptr *cl=new blptr[vec.size()];
for(int i=0;i<vec[0].length();i++)
cl[i]=new bool[vec[0].length()];
    cl=transform(vec,cl);

for(int k=0;k<vec.size();k++)


for(int l=0;l<vec[0].length();l++)
cout<<cl[k][l];
cout<<endl;
}
 }


blptr * transform(vector<string>& vec,blptr *bl)
{

blptr *temp=new blptr[vec.size()];
for(int z=0;z<vec[0].length();z++)
temp[z]=new bool[vec[0].length()];
for(int i=0;i<vec.size();i++)
for(int j=0;j<vec[0].length();j++)
{
if('1'==vec[i][j])
bl[i][j]=true;
if('0'==vec[i][j])
  bl[i][j]=false;
}

return temp;
}


...全文
181 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
arong1234 2008-04-03
  • 打赏
  • 举报
回复
虽然C99支持,但是很多编译器都不支持。
你那个根本就不是所谓的二维数组,不就是一个二维指针指向一组一维指针,然后一维指针又分别指向一个数组,这哪叫二维数组。
[Quote=引用 3 楼 lily604 的回复:]
C++也算是支持的吧,我不太懂.不过楼上说用类是个不错的办法.
大家在帮我看看代码吧
1楼说的很对,我把下面代码删去后果然是我想要的结果,就是改变数的时候有异常应该是数组越界什么的
  blptr *temp=new blptr[vec.size()];
for(int z=0;z <vec[0].length();z++)
temp[z]=new bool[vec[0].length()];
[/Quote]
lily604 2008-04-03
  • 打赏
  • 举报
回复
我还有个问题就是二维数组在堆上是连续分配的吗
把sub_set(1,2,vec);
改为 sub_set(2,2,vec);
就不能正常工作了
lily604 2008-04-03
  • 打赏
  • 举报
回复
C++也算是支持的吧,我不太懂.不过楼上说用类是个不错的办法.
大家在帮我看看代码吧
1楼说的很对,我把下面代码删去后果然是我想要的结果,就是改变数的时候有异常应该是数组越界什么的
  blptr *temp=new blptr[vec.size()];
for(int z=0;z <vec[0].length();z++)
temp[z]=new bool[vec[0].length()];
arong1234 2008-04-03
  • 打赏
  • 举报
回复
就不要想二维数组了,C++从语言上就不支持动态二维数组,如果你要数组,编一个数组类,用一维转二维方法实现
如数组a[m][n],如果用一维b表示,(i,j)个元素是b[i*n+j]
HelloDan 2008-04-03
  • 打赏
  • 举报
回复
乱了点吧。如果用引用的了不用返回也一样啊。都是同一个东西。
或者用指针返回。
qmm161 2008-04-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 arong1234 的回复:]
虽然C99支持,但是很多编译器都不支持。
你那个根本就不是所谓的二维数组,不就是一个二维指针指向一组一维指针,然后一维指针又分别指向一个数组,这哪叫二维数组。
引用 3 楼 lily604 的回复:
C++也算是支持的吧,我不太懂.不过楼上说用类是个不错的办法.
大家在帮我看看代码吧
1楼说的很对,我把下面代码删去后果然是我想要的结果,就是改变数的时候有异常应该是数组越界什么的
  blptr *temp=new blptr[v…
[/Quote]

--------------------------------
先在一段连续的空间把二维的空间全部分配好,然后在这段空间上面定义二维数组,就ok了,和静态数组时一样的!
lily604 2008-04-03
  • 打赏
  • 举报
回复
引用5楼
............................
虽然C99支持,但是很多编译器都不支持。
你那个根本就不是所谓的二维数组,不就是一个二维指针指向一组一维指针,然后一维指针又分别指向一个数组,这哪叫二维数组。
............................
我看Absolute C++是这么说的啊,原来这不叫二维数组,那么真正的二维数组是什么样的呢?


引用6楼
........................
我只是想int ,double 都能new 所以bool 也一样了,看来这不是个好习惯?
楼上说的biset也看别提起过,看来我一定要学学了.
........................
ryfdizuo 2008-04-03
  • 打赏
  • 举报
回复
bool变量怎么还要new什么的,
建议lz考虑能不能用bitset代替,
相关推荐
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-04-02 11:53
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下