c++ - typedef 复杂 STL 映射时的命名约定是什么?

标签 c++ stl

1) typedef'ing 时实际使用的约定是什么

类似

typedef std::map<SomeClass*, SomeOtherClass>  [SomeStandardName>]
typedef std::map<SomeClass*, std<SomeOtherClass> >  <[SomeStandardName]

2) 你通常把 typedef: 全局头文件放在类的地方吗?

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

4) 假设您有两个不同概念使用的映射,您是否为它们创建了两个单独的 typedef?

typedef map<string, SomeClass *> IDToSomeClassMap;
typedef map<string, SomeClass *> DescriptionToSomeClassMap;

谢谢


编辑#1

我对 typedef STL 映射特别感兴趣,例如

typedef map<int, string> IdToDescriptionMap

typedef map<int, string> IdToDescription

什么是常见的做法?

最佳答案

我更喜欢以下约定:

typedef std::map< Foo, Bar > FooToBarMap

我故意避免对迭代器进行类型定义,我更喜欢明确地将它们称为:

FooToBarMap::const_iterator

因为迭代器已经是事实上的标准类型名。我发现 FooToBarMapConstIter 在略读代码时实际上不太清楚阅读。

关于c++ - typedef 复杂 STL 映射时的命名约定是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/761655/

相关文章:

c++ - 指向特定类型的 STL 容器样式和迭代器 (C++)

c++ - 清空字符串流的最佳方法?

C++:从管道填充 vector

c++ - 使用 OpenCV 打开 USB 摄像头

c++ - 有没有办法在非复合操作时防止构造?

c++ - 模板相关的类型定义

c++ - 字符缓冲区的 istream

c++ - STL vector : undefined behaviour when calling data() on a temporary?

c++ - 如何在 ffmpeg 中使用硬件加速

C++ 可能在 COM 方法边界处抛出代码