寻找char**的C++替代
在C++中,
char*可以被vector<char>和string来替代。
那么char**能否被响应的类型来取代呢?
问题点数:60、回复次数:19Top
1 楼sankt(宠辱不惊,看庭前花开花落;去留无意,望天空云卷云舒.)回复于 2005-11-10 20:24:26 得分 0
upTop
2 楼JohnTitor(贱畜)回复于 2005-11-10 20:54:41 得分 5
char *&Top
3 楼Wolf0403(废人:独活十年~心如刀割)回复于 2005-11-10 21:20:51 得分 0
vector<string>Top
4 楼Joyfish(昏昏)回复于 2005-11-10 21:26:13 得分 5
两者结合起来
vector< vector<char> >
或者
vector< string >
Top
5 楼yingle2000(音乐天堂)回复于 2005-11-10 21:30:07 得分 5
回复人: Joyfish(昏昏)
两者结合起来
vector< vector<char> >
或者
vector< string >
------------------------
正解Top
6 楼sinall()回复于 2005-11-11 08:29:00 得分 0
各位兄弟,
本人也是这么想滴,
但是
char **argv
argv[0]是个字符串,char*
可是,vector<vector<char> >和vector<string>都无法做到!
我要传递给一个c函数,接口参数为char**
Top
7 楼wylove(阿刚)回复于 2005-11-11 10:52:32 得分 5
string *Top
8 楼yingle2000(音乐天堂)回复于 2005-11-11 10:58:38 得分 0
转化为vector<string>,然后传进去。Top
9 楼codemon(珍爱生命,远离美女)回复于 2005-11-11 11:10:22 得分 5
没有很好地解决办法,
vector或string只在外部特性上(通过重载操作符)模拟数组和字符串,内部存储方式上并不相同,你传入的那个函数将参数看作char**来处理,肯定是直接内存单元操作,不可能去调用vector或string方法或重载的操作符Top
10 楼nodummy(三甲 之 Linux/Unix里面甭给我分,谁给我分我和谁急)回复于 2005-11-11 11:52:53 得分 5
用vector<vector<type>>是一件自找苦吃的事情……Top
11 楼yuanchuang(元创)回复于 2005-11-11 12:11:02 得分 5
char a[][]Top
12 楼Joyfish(昏昏)回复于 2005-11-19 17:51:45 得分 5
自己写一个类来管理吧,以前偶写过生成double**的C++类用来调用C算法库,在类里面管理内存并不难Top
13 楼sinall()回复于 2005-11-19 18:14:44 得分 0
嗯,谢谢
我现在打算用
vector< char* >和vector< vector< char > >一起来解决。
Top
14 楼nFox18(无知者无畏)回复于 2005-11-20 12:56:10 得分 5
可以自己编个类来实现,,,,,
Top
15 楼FreeFice(庄鱼)回复于 2005-11-20 13:13:41 得分 5
vector<vector<char>>不能代替char**!
模版vector在存储结构上有自己的规则:单元对象大小相对固定,这样在实现动态数组时,可以方便定位。而char**并不是二维数组,而是两级指针,相当于二维稀疏矩阵,这样的话,用<vector<vector<char>>就不合适了。
在BCB里有一个很好用的类TStrings就是专门对应于char**的。Top
16 楼sinall()回复于 2005-11-20 13:26:46 得分 0
楼上,vector<vector<char>>也是稀疏矩阵啊。Top
17 楼chenhu_doc(^0^纯一狼^0^ 看书看到大笑,直到不能自已)回复于 2005-11-20 13:38:28 得分 5
char &*ccc;Top
18 楼chen_fu(精灵东东)回复于 2005-11-20 16:19:12 得分 5
问题不错,
Top
19 楼FreeFice(庄鱼)回复于 2005-11-20 17:49:19 得分 0
sinall()
楼上,vector<vector<char>>也是稀疏矩阵啊。
-------------------------------
如果我没记错的话,vector解决的是动态数组问题,也就是说每个单元大小相对固定的数据类型,而稀疏矩阵的无论从行或列来看都无法达到大小固定这一要求,所以就不合适使用vector这个容器,说白了,vector<char>是可以的,但vector<vector<T>>就不行了。Top




