c++ - 如何从对象中获取STL容器的类型?

标签 c++ stl

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

我当然可以从代码中获取类型,但我很想在不使用类型的情况下做到这一点。我也没有使用 C++11。

最佳答案

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

auto it = container.begin();

或等效地:

decltype(container.begin()) it = container.begin();

甚至:

decltype(container)::iterator it = container.begin();

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

关于c++ - 如何从对象中获取STL容器的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15550682/

相关文章:

c++ - cin - 读取加/减为 char

c++ - 为什么 C++ 字符串迭代器不检查错误?

c++ - 如何制作 C++ 包装器来为终端上的 std::vector 超出范围消息提供文件和行信息并中止

c++ - std::unordered_map vector 下标超出范围

c++ - 在 shared_ptr 的容器上使用 C++ std::equal

c++ - 两个语句 C++ 之间的区别

C++ 映射从迭代器位置开始搜索

c++ - ifstream seekg beyond end 不在 VS 2008 Express 中返回 eof?

c++ - 无法让我的数组编号与另一组进行比较

c++ - 什么会导致 C++ 中的段错误?