我有一个不同类型的链表格式(例如double
,struct DblNode {
double value;
DblNode * next;
}
struct IntNode {
int value;
IntNode * next;
}
):
DblNode * dbl_listind(DblNode * head,int ind){
DblNode * position = head;
int counter = 0;
while(counter < ind){
position = position -> next;
counter++;
}
return position;
}
现在我正在为这些列表做些事情,我遇到的问题是我不断复制和粘贴函数,进行次要类型编辑:
int
然后复制char inputString[10]; // initialize string
fgets(inputString, 11, stdin); // put input in inputString
。
有没有办法以某种方式有一个通用的列表类型,然后以某种方式指定这个功能,独立于我的链表的值成员的类型?
答案 0 :(得分:5)
那是什么类/功能模板应该做的。 e.g。
template <typename T>
struct Node {
T value;
Node * next;
}
template <typename T>
Node<T> * listind(Node<T> * head,int ind){
Node<T> * position = head;
int counter = 0;
while(counter < ind){
position = position -> next;
counter++;
}
return position;
}
// optional
using DblNode = Node<double>;
using IntNode = Node<int>;