-1
Я попытался использовать шаблоны по следующему коду, но у меня проблема с первой строкой основной функции!Использование шаблонов для C++
{
#include <iostream>
using namespace std;
template <class T>
struct node
{
T inf;
node<T> * next;
};
template <class S>
class String
{
private :
int Slength;
node<S> * SS;
public :
void get_String()
{
SS = new node<S>;
SS -> next = NULL;
node<S> * now = SS;
char input;
while(input = getchar())
{
if((input =='\n') || (input == ' ') || (input == '\t'))
break;
now -> inf = input;
now -> next = new node<S>;
now = now -> next;
now -> next = NULL;
++Slength;
}
}
void show()
{
node<S> * now = SS;
while(now -> next != NULL)
{
cout << now -> inf ;
now = now -> next;
}
cout << endl;
}
};
int main()
{
String a;
a.get_String();
a.show();
cout << char(0) << " " << int(' ') << " " <<endl;
system("pause");
return 0;
}
У меня есть проблема решена с добавлением
<char>
после этого! Есть ли другой хороший и эффективный способ. И знаете ли вы какую-либо надежную и читаемую ссылку для шаблонов?
Почему есть '' {в начале кода? – talnicolas
Когда вы создаете экземпляр шаблона класса, вам нужно предоставить список аргументов. Если у вас есть 'template class String ...', вы сможете использовать 'String <> a;', но даже с настройками по умолчанию для всех аргументов шаблона вам нужно включить угловые скобки , BTW, строка в виде связанного списка символов будет * ужасно * неэффективной (нарисуйте по крайней мере 4 байта указателей для каждого байта фактических данных). Поскольку вы распределяете узлы динамически, это, вероятно, даже хуже, чем обычно - как правило, минимум 16 или 32 байта на узел. –
@talnicolas: Хм ... вы видите, что иногда в начале скриптов [cint] (http://en.wikipedia.org/wiki/CINT), которые предназначены для интерактивного вызова, но в этом случае вы не захотите, t нужно «# включить» стандартный заголовок, например 'iostream'. – dmckee