如何获取容器中的元素类型?

时间:2013-05-12 03:26:06

标签: c++

假设我有一个这样的矢量:

std::vector<int> vec;

然后我想知道vec元素的类型。我怎么才能得到它?太糟糕decltype(vec[0])会产生int&

2 个答案:

答案 0 :(得分:7)

这是你要找的吗?

std::vector<int>::value_type

您也可以使用

std::remove_reference<decltype(vec[0])>::type

摆脱参考。

另一种选择是使用decltype(vec)::value_type。但是,由于编译器错误,Visual Studio上不会currently work。该编译器的解决方法是创建中间typedef

typedef decltype(vec) vec_type;
vec_type::value_type foo;

答案 1 :(得分:0)

对于任何容器类型的对象c,包括arrays和所有标准库containers,例如std::vectorstd::list

typename std::remove_reference<decltype(*std::begin(c))>::type

相关问题