簡體   English   中英

在不知道密鑰的情況下獲取std :: map中的值類型

[英]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是什么類型的情況下獲取Vtypeid(...).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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM