typedef یا type definition
در c/c++ میشه برای استفاده از type ها بوسیله کلمه کلیدی typedef اسم جدیدی رو در نظر گرفت .
نحوه تعریف به این شکله :
typedef type newName ;
مثلا :
typedef int var;
var a;// a be shekle int sakhte mishe inja
یا یک مثال دیگه که خیلی ازش استفاده میشه :
typedef unsigned int size_t;
کاربردی هم که دارن برای خوانایی بیشتر و سرعت بیشتر درنوشتن و تغییر کد هست .
فرض کنید شما می خواهین id و اسم چند نفر رو ذخیره کنین یک راهش میتونه این شکل باشه :
std::vector<std::pair<int,std::string>> info;
خب جالا شما فرض کنین که 20 جا داخل فایل می خواین کد بالا رو بنویسین خب طبیعتا هم حجم کد بالا میره هم خوانایی کم میشه
این جاست که میتونین از typedef استفاده کنین :
typedef std::vector<std::pair<int,std::string>> Data;
و هر جا که خواستین به این شکل از این وکتور شی بسازین :
Data info;
توی c برای ساختن struct باید به این شکل عمل کرد :
struct MyStruct
{
int a;
//...
};
int main ()
{
struct MyStruct s;
}
حالا برای این که از اون struct اضافی استفاده نشه از typedef استفاده می کنن :
typedef struct MyStruct
{
int a;
//...
}MyStruct;
int main ()
{
MyStruct s;
}
البته در c++ نیازی به typedef برای struct نیست .
در c++11 به جای typedef میشه از using استفاده کرد و بهتر هم هست که از using استفاده بشه .
نحوه تعریف :
using newName=type;
مثلا همون مثال اول و دوم به این شکل میشه :
#include <utility>
#include <vector>
#include <iostream>
using Data= std::vector<std::pair<int,std::string>>;
using MyInt=int;
int main ()
{
Data info;
MyInt a;
//..
return 0;
}