怎么在C++中用Vector存放不同类型的数据..

比如需要定义一个vector<>类型的容器value需要实现value.pushback(1);value.pushback("type");能实现这种效果吗?能不用bo... 比如需要定义一个vector<>类型的容器 value
需要实现
value.pushback(1);
value.pushback("type");
能实现这种效果吗? 能不用boost.any来实现么...
展开
 我来答
heresy_me
2011-10-01 · TA获得超过1719个赞
知道小有建树答主
回答量:1708
采纳率:42%
帮助的人:302万
展开全部
namespace std {
template<class T,class A = allocator<T> > struct vector {
typedef typename A::value_type value_type;
typedef typename A::reference reference;
typedef A allocator_type;
typedef typename A::pointer pointer;
typedef typename A::size_type size_type;
// ...

explicit vector() throw() : sz(0), random_ptr() { }
// ...
void push_back(const value_type& v) {
!random_ptr ? random_ptr = new T(v): new(random_ptr+sz) T(v);
sz++;
}
reference operator[](size_type ind) { return *(random_ptr+ind); }
size_type size() const { return sz; }
// ...
private:
size_type sz;
pointer random_ptr;
};
}
在此我并没有考虑到push_back()牵涉到的reserve(),只是大致上如此。如果你要想这段代码能在main()下运行,请定义一个合适的析构函数
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tuxtoken
2011-09-27 · TA获得超过601个赞
知道小有建树答主
回答量:540
采纳率:0%
帮助的人:501万
展开全部
vector<anything_t *>
其中
typedef struct taganything
{
void *data;
int length;
} anything_t;
boost.any我不懂。
追问
谢谢你
但是用了你提供的方法
在使用push_back的时候会发生错误..string无法转化为anything_t
追答
string不是放在anything_t的,string要放在anything_t->data中。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式