symbian os不支持stl,主要原因是因为stl覆盖的面太广,不适合在内存受限的设备上使用。
在这里我们首先学习rarray模板类。如果您有java或者.net方面的经验,symbian中的rarray和rpointerarray类似于java中的vector<>或.net中的list<>。
注意事项:
rarray和rpointerarray都是基于模板的
rarray的模板参数应该为r类或t类,而rpointerarray的模板参数可以是任意类型
rarray是固定长度对象的集合(最小长度为4个字节,对象的sizeof必须>4!),rpointerarray是对象指针的集合
rarray和rpointerarray应该创建在栈上,或者为c类的成员变量
接下来我们将针对rarray和rpointerarray的几个常用的方法进行介绍,以下所有演示代码都在控制台程序中执行。
一、常用方法
1、[">操作符
rarray重载了[">操作符:
inline const t &operator[">(tint anindex) const;
inline t &operator[">(tint anindex);
2、添加元素,append和appendl方法:
首先我们使用一断代码来说明append(l)的使用方法:
_lit(ktext1, "hello world 1");
_lit(ktext2, "hello world 2");
rarray array;
array.append(ktext1());
array.append(ktext2());
console->write(array[0">);
array.reset();
array.close();
按照我们的理解,控制台输出的应该是“hello world 1”,但事实上,控制台输出的是乱码,为什么呢?
我们上面的注意事项中的第三点:“rarray是固定长度对象的集合”,模板参数的长度在rarray构建时被确定,但是tdesc类型的长度明显是可变的(tdesc为描述符的基类,描述符的派生类的长度会根据包含的内容改变),所以在此得不到正确的结果。
如果喜欢symbian编程总结-基础篇-集合与缓冲区(1)-rarray和rpointerarray请收藏或告诉您的好朋友.
阅读(147) | 评论(0) | 转发(0) |