- 论坛徽章:
- 0
|
回复 tm_wb
LZ,看了一下你的vector_t容器的代码,,问个问题
一个vector_t容器能否同时存不 ...
wmmy2008 发表于 2010-06-19 16:48 ![]()
我使用例子回答你的问题吧
例如:
vector_t* pvec_a = create_vector(int);
对于pvec_a只能够保存int类型的数据,不能保存其他类型的数据了,如果你需要在pvec_a中再保存非int类型的数据,这是做不到的。
libcstl 2.0中容器可以保存任何类型的数据,如:
/* 保存C语言内部类型 */
vector_t* pvec_int = create_vector(int);
vector_t* pvec_double = create_vector(double);
/* 保存libcstl 提供的类型 */
vector_t* pvec_set = create_vector(set_t<int>);
vector_t* pvec_hmap = create_vector(hash_map_t<int, list_t<double>>);
/* 保存自定义类型的数据 */
struct _tagabc
{
...
}abc_t;
vector_t* pvec_abc = create_vector(struct _tagabc);
或者
vector_t* pvec_abc = create_vector(abc_t);
但是对于自定义类型必须使用type_register来注册该类型,才能够创建成功,否则create_vector将失败。
要想让libcstl将struct _tagabc和abc_t识别为同一个类型还要调用type_dupliacte。
这样libcstl 2.0容器可以保存任何类型的数据。
主要就是libcstl 2.0中增加了类型机制来保存类型信息。具体的使用方法请参考libcstl的用户指南。 |
|