当typdef复杂STL映射时,命名约定是什么?

12 c++ stl

1)typedef'ing在实践中使用的约定是什么

就像是

typedef std::map<SomeClass*, SomeOtherClass>  [SomeStandardName>]
typedef std::map<SomeClass*, std<SomeOtherClass> >  <[SomeStandardName]
Run Code Online (Sandbox Code Playgroud)

2)你通常把typedef:header文件放在全局,本地的类中?

3)你是typedef迭代器还是const map <>版本?

4)假设你有两个不同概念使用的地图,你创建两个独立的typedef吗?

typedef map<string, SomeClass *> IDToSomeClassMap;
typedef map<string, SomeClass *> DescriptionToSomeClassMap;
Run Code Online (Sandbox Code Playgroud)

谢谢


编辑#1

我特别感兴趣的是typedef STL地图,比如

typedef map<int, string> IdToDescriptionMap
Run Code Online (Sandbox Code Playgroud)

要么

typedef map<int, string> IdToDescription
Run Code Online (Sandbox Code Playgroud)

什么是常见做法?

Not*_*ure 16

我更喜欢以下约定:

typedef std::map< Foo, Bar > FooToBarMap
Run Code Online (Sandbox Code Playgroud)

我故意避免使用typedef的迭代器,我更喜欢将它们明确地称为:

FooToBarMap::const_iterator
Run Code Online (Sandbox Code Playgroud)

因为迭代器已经是事实上的标准typename.我发现,在浏览代码时,FooToBarMapConstIter实际上不太清晰.