2013-11-10 74 views
1

說我有一個包含有一個指針類型按鍵映射類:動態分配地圖指針值

class Base; 
class App 
{ 
    private: 
    size_t n; 
    map<string, Base*> m; 
}; 

我想的是,當我指的首次地圖鍵,我需要已經分配給「n」個元素的「Base *」指針。我不能在構造函數中進行這種分配,因爲只有在運行時才知道映射鍵值。不知道什麼是最好的解決方案。

+0

首先,你的意思是」 價值「,而不是」鑰匙「,對嗎?其次,如何以及何時確定?它是編譯時常量嗎? – jogojapan

回答

1

「不知道什麼是最好的解決方案這個」

我要說的是避免動態分配的C數組將是一個良好的開端。也許代替

map<string, Base*> m; 

你可以使用:

map<string, std::vector<Base> > m; 

「時,我指的是第一次地圖的關鍵,我需要的‘基地*’指針已經分配給‘N’元素「

你可以做這樣的事情:

std::vector<Base>& getVal(const std::string& key) { 
    if (m.count(key) > 0 && m[key].size() > 0) 
     return m[key]; 
    m[key] = std::vector<Base>(10); // n 
    return m[key]; 
}