2015-03-20 3 views
3

Прощай, пожалуйста, на меня, поскольку я иду по тонкой линии здесь. Я действительно искал существующие темы, и я мог видеть только заявления без примеров, и это просто перевернуло мне голову. Я думал, стоит ли просить об этом два дня, потому что я откровенно боюсь задавать здесь глупый вопрос. Но я думаю, что сейчас рискну и надеюсь, что ты пойдешь на меня, потому что это мой первый вопрос.Относительно typedefing structs

Эти существующие темы предположили, что typedef ing struct сохранит повторяющиеся коды, но как? Любой пример, пожалуйста? У меня есть следующие, например:

struct Node { 
    int data; 
    Node* value; 
}; 

Чтобы создать новый узел, я бы сказал:

Node n1; 

Даже если определение типа во в-структуру, как:

typedef struct Node { 
    int data; 
    Node* value; 
} type; 

Чтобы создать новый узел, я бы сделал:

type n2; 

У меня нет действительно вижу большую разницу. Просьба привести пример, который действительно демонстрирует полезность typedef для структур.

+0

Если вы ссылаетесь на другие вопросы, вы должны включить ссылки на них, они, вероятно, вопросы о C, а не C++. – user657267

+0

Это вообще не требуется в C++? – Boult

+0

Не в примере, который вы указали, нет. Определения 'class' /' struct' в C++ уже вводят новые типы и не нуждаются в 'typedef'ed. – user657267

ответ

1

Для такого рода типов typedef полезен в C - на C++ не так много. В C вы не можете просто ввести Node, когда у вас есть struct Node - вы должны на самом деле ввести struct Node. Таким образом, typedef может сохранить некоторую типизацию там.

В C++ это более полезно при работе с шаблонами. Например

typedef std::map<std::string, std::pair<int, std::string>> MyMap; 

Это позволяет использовать, например, MyMap::iterator вместо std::map<std::string, std::pair<int, std::string>>::iterator, который намного проще печатать.

+0

Ничего себе, я не знаю, что такое карта. :( – Boult