让我们说:
set<int, less<int> > m_intset;
Run Code Online (Sandbox Code Playgroud)
这是有效的,但现在我将其更改为typedef,我最终得到两行代码:
typedef set<int, less<int> > SetInt;
SetInt m_intset;
Run Code Online (Sandbox Code Playgroud)
这样的优势是typedef什么?我正确使用它吗?
gol*_*udo 18
使用typedef的一些优点:
简化:现在,每当你通常需要时set<int, less<int> >,你只需要输入SetInt.如果你只使用一次这个集合没什么大不了的,但是如果你有同一个集合的多个实例,或者需要访问它的迭代器,那么更短的形式更容易阅读和输入.
澄清:set<int, less<int> >并没有告诉我任何关于变量用途的信息,只是它是一组整数.使用typedef,您可以选择一个标识符来解释类型的用途,例如Inventory或Coordinates.
抽象:程序改变.虽然您可能认为自己set<int, less<int> >现在需要,但您的要求可能会在未来发生变化,从而需要进行一项set<unsigned long, less<unsigned long> >或vector<int>其他更改.通过使用typedef,您只需要在一个地方修复它,它将影响SetInt程序中的每个实例.与手动更改源文件中的十几个或更多条目相比,这更容易并且更不容易出错.
由于上面的第2点和第3点,当在类或库中使用时,typedef可以非常强大,因为它可以加强接口和实现之间的分离,这通常被认为是良好的C++形式.
当然,如果你在同一个程序中多次使用相同的类型,这些优点中的大多数只会真正显示出来.如果你只想使用set<int, less<int> >一次,typedef可能是矫枉过正.
Typedef主要是符号方便,但它们确实有很多好处:
我敢肯定还有更多我没想到......