如何实现模板参数不同的容器

zyz193 2010-08-05 02:07:19
从控制台输入一个flag变量的值,如果flag==1,则定义vector<int> vec_a;如果flag==2,则定义vector<float> vec_a;如果flag==3,定义vector<double> vec_a。请问以上如何实现?
注:
如果这样写:
if(flag == 1)
{
vector<int> vec_a;
}
else if(flag == 2)
{
vector<float> vec_a;
}
else if(flag == 3)
{
vector<double> vec_a;
}

vec_a.push_back(...);
...
...
...

vc6.0下编译通不过。请教各位高手,怎么才能实现?
...全文
99 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyz193 2010-08-05
  • 打赏
  • 举报
回复
不对 其实还是一样的,半天才反应过来。。。
zyz193 2010-08-05
  • 打赏
  • 举报
回复
5楼的思路挺好,虽然多了几个不用的变量,但总比多写一大堆重复的代码要好。给分。
FengRider 2010-08-05
  • 打赏
  • 举报
回复
那能不能换个思路,事先准备好三种vector容器,标志是哪个,就用哪个容器。
vector<int> vec_a;
vector<float> vec_b;
vector<double> vec_c;
if(flag ==1)
{
vec_a.push_back(...);
......
}
else if(flag ==2)
{
vec_b.push_back(...);
......
}
......
zyz193 2010-08-05
  • 打赏
  • 举报
回复
如果把
vec_a.push_back(...);
...
...
...
这一堆代码放在每个if下也可以实现,但是那样代码重复的太多了,不简洁。
zyz193 2010-08-05
  • 打赏
  • 举报
回复
我已经知道编译通不过的原因。发帖就是想问问这个问题该怎么解决,大家有没有什么好的思路啊
xixiaoliu 2010-08-05
  • 打赏
  • 举报
回复
{
vector<int> vec_a;
}
出这个 { } vec_a 就没有了,所以通不过。




至于你说的这个问题,也许你要换一种设计思路

stardust20 2010-08-05
  • 打赏
  • 举报
回复
if(flag == 1)
{
vector<int> vec_a;
}
vec_a.push_back(...);
vec_a的作用范围只在这个语句块中。。不在它的作用范围内。。所以无法使用

65,187

社区成员

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

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