C++ 如何使用decltype获取向量元素';s类型作为模板参数
以下是我的部分代码:C++ 如何使用decltype获取向量元素';s类型作为模板参数,c++,templates,decltype,template-argument-deduction,C++,Templates,Decltype,Template Argument Deduction,以下是我的部分代码: int getLength(const vector<int> &arr) { auto n=arr.size(),dis=n; unordered_map<int,decltype(dis)> S; //... } int getLength(常量向量和arr){ 自动n=arr.size(),dis=n; 无序地图; //... } 到目前为止还不错。现在,我不再为我的std::unordered_map硬编
int getLength(const vector<int> &arr) {
auto n=arr.size(),dis=n;
unordered_map<int,decltype(dis)> S;
//...
}
int getLength(常量向量和arr){
自动n=arr.size(),dis=n;
无序地图;
//...
}
到目前为止还不错。现在,我不再为我的std::unordered_map
硬编码“int
”,而是尝试将其更改为如下内容:
无序地图代码>
或
无序地图代码>
或
无序地图代码>
似乎都不管用。在这里使用decltype()
的正确语法是什么
在这里使用decltype的正确语法是什么
decltype(arr.front())
和decltype(arr[0])
都正常,但不幸的是,它们都将引用返回到常量int
(考虑到arr
是一个常量向量)
举例来说,您必须删除引用和常量
std::unordered_map<
std::remove_const_t<std::remove_reference_t<decltype(arr.front())>>,
decltype(dis)> S;
std::unordered_map<
std::remove_reference_t<decltype(arr)>::value_type,
decltype(dis)> S;