[英]Getting the type of a value in std::map without knowing the key
我有一個包含未知鍵和值類型的映射,我想在不事先知道鍵類型的情況下確定值類型的typeid(...).name()
:
std::map<K, V> aMap;
// This gives me the typeid(...).name(), but requires knowing the key type
typeid(aMap[0]).name();
有沒有辦法在不知道K
是什么類型的情況下獲取V
的typeid(...).name()
?
應該指出的是,我僅限於C ++ 03; 但是,如果有可能在C ++ 11或更高版本中執行此操作,那么知道它會很酷。
假設你至少知道你正在處理的是std::map
,你可以使用模板函數或多或少地直接獲取鍵和值類型:
#include <iostream>
#include <string>
#include <map>
template <class T, class U>
std::string value_type(std::map<T, U> const &m) {
return typeid(U).name();
}
int main() {
std::map<int, std::string> m;
std::cout << value_type(m);
}
為std::string
打印出來的實際字符串是實現定義的,但至少這會為您提供一些旨在表示該類型的東西,而不value_type
其硬編碼為value_type
或類似的東西。
在std::map
的特定情況下,您可以使用mapped_type
- 上面的模板方法也適用於那些沒有定義類似的模板。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.