有没有办法在语法上缩短/简化C++中的迭代器声明.通常我会:
vector<pair<string, int> > v;
vector<pair<string, int> >::iterator i;
Run Code Online (Sandbox Code Playgroud)
我希望有一些魔法:
vector<pair<string, int> > v;
magic v::iterator i;
Run Code Online (Sandbox Code Playgroud)
只需typedef
用于别名你的vector<pair<string, int> >
typedef vector<pair<string, int> > Vp; // vector of pair
Run Code Online (Sandbox Code Playgroud)
然后,
Vp v;
Vp::iterator i;
Run Code Online (Sandbox Code Playgroud)
在C++ 11中,您有三个选择:
1. Typedef向量实例化
typedef std::vector<std::pair<std::string, int>> Vp;
Vp v;
Vp::iterator i;
Run Code Online (Sandbox Code Playgroud)
2.使用 decltype
std::vector<std::pair<std::string, int>> v;
decltype(v)::iterator i;
Run Code Online (Sandbox Code Playgroud)
3.使用 auto
std::vector<std::pair<std::string, int>> v;
auto i = v.begin();
Run Code Online (Sandbox Code Playgroud)
我会说第三个选项是最常见的惯用法,但都是有效的,第一个选项也适用于C++ 98.