如何使用模板的类处理int和字符串?

时间:2011-09-15 19:25:53

标签: c++ templates

我对C ++中的模板很新,我一直在尝试使用模板创建一个包含数字和名称的列表数组。我正在使用存储数字的现有示例代码,我正在尝试调整它以添加字符串。

以下是示例代码:http://pastebin.com/4sZ6PxcQ

我尝试添加一个数据类型为T的第二个变量,并将其添加到items变量所在的所有相同位置,但它不起作用,因为它是两种不同的数据类型。这样做有什么建议吗?我有一些其他的想法,但我很新使用模板,所以我不确定它们会工作,因为我想象他们。

我必须拥有它,因此数字和名称都保存在同一个数组中。全部使用模板。

2 个答案:

答案 0 :(得分:0)

只需将这两个条目存储在最后一个pairtuple

#include <utility>
typedef std::pair<int, std::string> IntAndString;
ListArray<IntAndString> aList;

bool success;

aList.insert(0, std::make_pair(10, "Ten"), success);
aList.insert(1, std::make_pair(8, "Eight"), success);

IntAndString out;
aList.retrieve(1, out, success);

cout << out.first << " " << out.second << "\n";

这个ArrayList课程是你自己写的吗?如果这不是家庭作业,我建议您使用STL中的数据结构,例如std::liststd::vector来满足您的需求。 ArrayList本身的实现有点笨拙(通过引用发送返回结果?)

为了使用您的特定实现,您需要一个适当的“流插入运算符”operator <<,以便在IntAndString函数中使用上述ArrayList::print类型。

答案 1 :(得分:0)

没有检查过您的代码,但如果您想要一个列表,其中每个元素由一个int和一个字符串组成,则创建一个聚合(例如,一个struct),它包含两个元素并创建一个列表这种聚合。或者,您可以使用std::pair< int, std:: string >作为元素。