如何从对象获取stl容器的类型?

Ash*_*hot 2 c++ stl

如何从对象中获取STL容器的类型?例如,我有一个container变量,我知道它是std::vector<some type>.我需要使用迭代器迭代容器.有没有办法在不知道容器类型的情况下声明迭代器?

我当然可以从代码中获取类型,但我很乐意在不使用类型的情况下完成它.我也不是在使用C++ 11.

Jos*_*eld 8

C++ 11有一些很简单的方法:

auto it = container.begin();
Run Code Online (Sandbox Code Playgroud)

或等效地:

decltype(container.begin()) it = container.begin();
Run Code Online (Sandbox Code Playgroud)

甚至:

decltype(container)::iterator it = container.begin();
Run Code Online (Sandbox Code Playgroud)

尽管如此,即使您不能使用类型推导,也不应该处于无法以某种形式输入类型(可能涉及模板参数)的情况.如果编译器知道它是什么类型,那么你也是.