二维数组

cheyi022 2009-09-15 10:06:00
我定义了一个二维数组
struct
{
int i;
long j;
GdkPixbuf *buf;
}mystruct; //一个结构

struct
{
CArray<mystruct, mystruct> column;
}one_row; //另一个结构

CArray<one_row, one_row> rows; // 二维数组

但我发现这个二维数组不能用,连ADD都执行不了,为什么?

请问还有没有别的更好的定义二维数组的结构可以用,要动态的,能在前后都添加删除修改数据的……
就像可以类似,rows.add(),rows.insert(),rows.getat(0).colume.add()等操作。

谢谢。
...全文
116 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
alfredasdm 2009-09-15
  • 打赏
  • 举报
回复
map或CMap也可以的!
cphj 2009-09-15
  • 打赏
  • 举报
回复
这样改就可以使用rows.add()了
需要给one_row定义构造函数、赋值函数


typedef struct 
{
int i;
long j;
GdkPixbuf *buf;
} mystruct; //一个结构

class one_row
{
public:
CArray <mystruct, mystruct> column;
one_row(){} //空函数示例,需要根据你自己的情况增加代码
one_row(const one_row & r){} //空函数示例,需要根据你自己的情况增加代码
one_row & operator=(const one_row & r){return *this;} //空函数示例,需要根据你自己的情况增加代码
}; //另一个结构


void main()
{
CArray <one_row, one_row> rows; // 二维数组
one_row r;
rows.Add(r);
}
cheyi022 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 mstlq 的回复:]
如果前插操作少,可以用vector……
前插多就用deque……

至于模板参数用指针还是用值,这个需要楼主根据具体情况自行判断^_^
[/Quote]
因为是用来图形的漫游操作,所以前后插都很频繁,中间的数据需要改,但是不用插入新数据,所以,先决定研究研究deque看看好不好用……
mstlq 2009-09-15
  • 打赏
  • 举报
回复
如果前插操作少,可以用vector……
前插多就用deque……

至于模板参数用指针还是用值,这个需要楼主根据具体情况自行判断^_^
cheyi022 2009-09-15
  • 打赏
  • 举报
回复
不用MFC的,GTK貌似也就用用标准C或C++的
thy38 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 cheyi022 的回复:]
我定义了一个二维数组
struct
{
    int i;
    long j;
    GdkPixbuf *buf;
}mystruct;  //一个结构

struct
{
    CArray <mystruct, mystruct> column;
}one_row;  //另一个结构

CArray <one_row, one_row> rows;  // 二维数组

但我发现这个二维数组不能用,连ADD都执行不了,为什么?

请问还有没有别的更好的定义二维数组的结构可以用,要动态的,能在前后都添加删除修改数据的……
就像可以类似,rows.add(),rows.insert(),rows.getat(0).colume.add()等操作。

谢谢。
[/Quote]

这是MFC里面的库,建议LZ还是用STL的类库进行扩展吧,可移植性更高。

用STL的话就是:deque<deque<mystruct> > twoD_array;
leewon1988 2009-09-15
  • 打赏
  • 举报
回复
用vector就行吧,如果不用MFC的那种串行化操作的话
感觉还是vector好用,如果要是频繁的再末位或者是对头插入的话,用2楼的deque队列效率更好啊
fallening 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mstlq 的回复:]
二维的话,
deque <deque <yourtype> >
支持高效前插后插,下标访问……
中间插的效率就低了>_ <
[/Quote]

哦,这个比vector好点,不过空间有些浪费,最好用指针:)
linklist也不错

linklist<linklist<TYPE>* > two_dim_link;
fallening 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 cheyi022 的回复:]
我定义了一个二维数组
struct
{
    int i;
    long j;
    GdkPixbuf *buf;
}mystruct;  //一个结构

struct
{
    CArray <mystruct, mystruct> column;
}one_row;  //另一个结构

CArray <one_row, one_row> rows;  // 二维数组

但我发现这个二维数组不能用,连ADD都执行不了,为什么?

请问还有没有别的更好的定义二维数组的结构可以用,要动态的,能在前后都添加删除修改数据的……
就像可以类似,rows.add(),rows.insert(),rows.getat(0).colume.add()等操作。

谢谢。
[/Quote]
你要用的是这种吧?
vector<vector<TYPE>* > two_dim_arr;

mstlq 2009-09-15
  • 打赏
  • 举报
回复
二维的话,
deque<deque<yourtype> >
支持高效前插后插,下标访问……
中间插的效率就低了>_<
mstlq 2009-09-15
  • 打赏
  • 举报
回复
二维数组的二维数组>_<?

65,199

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧