4

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

std::vector<int> vec;

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

4

2 回答 2

6

这是你要找的吗?

std::vector<int>::value_type

你也可以使用

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

摆脱参考。

另一种选择是使用decltype(vec)::value_type. 但是,由于编译器错误,这目前不适用于 Visual Studio。该编译器的解决方法是创建一个中间typedef.

typedef decltype(vec) vec_type;
vec_type::value_type foo;
于 2013-05-12T03:28:25.037 回答
0

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

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

于 2015-03-07T21:45:10.290 回答